.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.comdef.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就到这儿吧(如有错误,欢迎大家指正)

posted @ 2018-12-28 15:47  大师兄法号随缘  阅读(63)  评论(0编辑  收藏  举报