ASP.NET Core 2.1发布/部署到Ubuntu并配置Nginx反向代理实现ip访问
一、准备
我用的是Ubuntu服务器器 [Ubuntu 18.04 x64] 和终端管理工具【Xshell】
二、安装
在服务器上安装.NET Core
三、部署程序
1、创建实例程序
可以直接使用.NET Core 的命令创建一个ASP.NET Core 示例网站应用程序,创建目录 /home/myuser/firstapp,执行命令:
dotnet new mvc
接着,发布刚才创建的ASP.NET Core 网站发网站目录,所以,我们先创建一个网站发布目录:/var/www/firstapp,运行dotnet发布命令:
dotnet restore dotnet publish -c release
dotnet命令将把ASP.NET Core 2.0 示例网站发布到目录:/home/myuser/firstapp/bin/release/netcoreapp2.0/publish/ 中,拷贝发布后的ASP.NET Core 2.0网站程序:
scp -r /home/myuser/firstapp/bin/release/netcoreapp2.0/publish/* /var/www/firstapp
2、或者拿自己创建的程序发布后 拷贝至服务器上。
将发布后的publish目录下的文件拷贝至一个网站发布目录
四、将执行程序设置为服务
我们需要配置 systemd
来让 dotnet core程序
成为一个服务并启动。创建服务文件:
sudo vim /etc/systemd/system/myApp.service
编辑内容如下:
[Unit] Description=My ASP.Net Core Project [Service] WorkingDirectory=/var/www/firstapp ExecStart=/usr/bin/dotnet /var/www/firstapp/firstapp.dll Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-firstapp User=myuser Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
启用并启动服务
sudo systemctl enable myApp.service # 注册服务 sudo systemctl start myApp.service # 启动服务 sudo systemctl status myApp.service # 检查服务的运行状态
现在,我们的示例网站就可以通过5000端口在服务器端访问了,在终端使用w3m命令:
w3m http://localhost:5000
说明我们的ASP.NET Core 网站应用程序在linux服务器上配置成功了。
但是,这个示例程序现在还只能在服务器中访问,外网是不能访问的。
五:Nginx反向代理
sudo apt-get install nginx
使用 vim 配置nginx的服务配置
sudo vim /etc/nginx/sites-available/default
将nginx的配置替换成如下的配置:
server { listen 80; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
或者
server { listen aa.xx.yy.zz:80; //服务器内网地址 server_name aa.xx.yy.zz; //服务器内网地址 location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
现在你的ASP.NET Core 网站可以通过外网ip访问了,如果你还想让你的网站支持通过域名访问,那nginx中配置也是非常简单的:
server { listen 80; server_name www.your_domain_name.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
其中:www.your_domain_name.com 即为你的域名,修改配置后,重新加载nginx配置:
systemctl reload nginx
相关推荐
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题。比如现在我们用mirror.example.com镜像www.baidu.com,以下是详细操作。