.Net Core 2.0的一些不大一样的地方(二)——服务器环境

@老徐  September 23, 2017

我在《.Net Core 2.0的一些不大一样的地方(一)——基础身份认证》中,说了下关于Cookies的不同之处,在这篇文章中,我说下关于服务器的相关问题。
服务器的环境安装,在官网中介绍的.Net Core 2.0环境的安装方法,是通过源的方法来安装,我尝试了下,失败了,可能是和我的服务器中有之前的.Net Core 1.0环境有关。把原来的环境删掉,先删除/usr/local/bin/dotnet软链接,之后再删除掉.net core的文件夹/opt/dotnet。不过我后面再没有试通过源的方式安装是否没问题,这里我还是使用.net core 1.0的时候安装的方法,下载.net core 2.0 sdk,之后解压缩设置软链接的方式安装。
微软官方给出的通过源安装的方法,参见:《.NET and C# - Get Started in 10 Minutes》一文,自行选择自己使用的操作系统,来按步骤安装。
如果在程序中,使用了身份认证(如Cookies等,见《.Net Core 2.0的一些不大一样的地方(一)——基础身份认证》),那么还需要在Startup.cs文件的Configure方法中,在调用UseAuthentication之前调用UseForwardedHeaders,如下:

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.UseAuthentication();

这样,在做身份验证的时候,能够通过反代服务器取到用户访问的URL,不然的话,会因为URL不一致(用户访问的是Nginx服务器上绑定的域名,而.net core服务器使用的是localhost)导致验证失败。
nginx服务器的安装及反代服务配置与之前的版本没有什么区别,有区别的是守护程序的配置,使用的还是systemd(systemctl),配置中,需要多设置一项:
WorkingDirectory=站点的根目录
如:

[Unit]
Description=Example .NET Web API Application running on Ubuntu
[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/local/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
RestartSec=10 # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target

如果不设置这项的话,所有的静态资源文件都请求不到,返回502或404错误。

好了,基本就这些了吧,遇到其他的再继续补充。


添加新评论