.net core2.2 利用Nginx反向代理在Ubuntu下部署
一、需要给ubuntu安装.netcore的环境
我这儿使用的是Ubuntu18.04,安装的是.net core 2.2
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
二、用VS2017编译并发布.netcore项目
1.设定项目的端口号,建议写到配置文件中
2.发布
部署模式改成独立,目标运行时选择linux-x64
发布完后将文件复制到ubuntu下(虚拟机可以用vmware-tools拖进去,服务器的话,可以使用sftp等工具)
三、在ubuntu下运行项目
在发布文件目录下,运行发布后的dll
我这儿是XingHe.WebUI.dll
出来这个画面表示已经运行了
此时我们可以使用浏览器运行测试一下
如果运行出了问题,可能是开了防火墙,我们把8080端口开放一下,顺便把80端口也开放一下
sudo ufw allow 8080
sudo ufw allow 80
四,利用Nginx反向代理(目的是通过访问80端口来间接访问8080端口)
肯定会有人问,为什么不直接使用80端口呢。(其实这是可以的)
如果我们同一台服务器上要部署多个web应用呢,两个程序不能同时使用80端口。
这个会扯远,回到正题
1.安装Nginx
sudo apt install nginx
安装完后,通过浏览器运行一下
出来这个画面就表示安装成功了
2.修改配置文件
sudo vim /etc/nginx/sites-enabled/default
将配置文件修改成如下:
server{
listen 80;
location /{
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_http_version 1.1;
}
}
重启一下nginx
nginx -s reload
此时我们在浏览器访问一下80端口试试
此时表示配置完成了
我们登录一下后台,在登录的时候可能会出现验证码出不来
控制台出现这么一个问题,那我们怎么解决呢?
具体操作如下:
apt-get update
apt-get install -y libgdiplus
cd /usr/lib
ln -s libgdiplus.so gdiplus.dll
然后重启一下dotnet项目(不是重启nginx)
五、利用Ngiux反向代理多个dotnet core项目
比如abc.test.com 和 def.test.com 都指向这台linux服务器IP
我们想通过abc.test.com来访问8080端口
通过def.test.com来访问8081端口
我们该怎么配置呢?
sudo vim /etc/nginx/sites-enabled/default
修改如下:
server {
listen 80;
server_name abc.test.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_http_version 1.1;
}
}
server {
listen 80;
server_name def.test.com;
location / {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_http_version 1.1;
}
}
最后重启一下nginx
nginx -s reload
OK就到这儿吧(如有错误,欢迎大家指正)