Centos7运行NETCore完整教程(三):nginx反向代理

目录

1.安装nginx

2.修改nginx配置

3.将Nginx添加到SELinux白名单

4.测试连接


1.安装nginx

1.添加 Nginx 存储库

sudo yum install epel-release

2.安装nginx

sudo yum install nginx

3.启动nginx

sudo systemctl start nginx

再设置开机启动

sudo systemctl enable nginx

启动后浏览器地址输入你的IP地址直接访问

如果访问不了,那就是防火墙需要添加配置,如果用的是firewall,可以用以下指令来添加80端口和允许 HTTP / HTTPS 通信。

firewall-cmd --permanent --zone=public --add-port=80/tcp       //添加80端口
firewall-cmd --permanent --zone=public --add-service=http      //允许HTTP
firewall-cmd --permanent --zone=public --add-service=https     //允许HTTPS

其中“--permanent"参数表示永久生效设置;"--zone"参数表示作用区域。

再重启下防火墙是配置生效

sudo systemctl restart firewalld

如果防火墙用的是iptables,那之前已经配置过了,这里就不用配置了,详情查看Linux运行NETCore完整教程(二):MySQL8.0的第七点。

2.修改nginx配置

首先,把Nginx的默认配置文件 /etc/nginx/nginx.conf里 80 端口转发配置 server 节点用 # 符注释掉。

通过以下指令, 打开文件编辑模式, 输入i 进行编辑 完成后 按ESC键输入:wq 回车 退出编辑模式

vi /etc/nginx/nginx.conf

如果系统有视图界面的话可以直接打开编辑,方便很多。我是用图形界面直接编辑的,加“#”注释。

然后我们切换到 /etc/nginx/conf.d目录下创建一个自定义的Nginx配置文件用来代理Core 程序, 我创建名称为netcore.conf(自定义文件名)。

cd /etc/nginx/conf.d
touch netcore.conf

编辑配置文件,内容如下:

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;
    }
}

proxy_pass 后的url为你在core 启动项配置的路径(默认localhost:5000)

配置完后保存退出,最后执行以下指令重启nginx

nginx -s reload

3.将Nginx添加到SELinux白名单

将项目dotnet跑起来后,我们本机访问页面会出现以下情况

这个问题是由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。

执行以下指令,将Nginx添加到SELinux白名单

yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp

PS:如果执行命令时出现下列情况:

执行 sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

返回的是nothing to do的话,说明项目还没有跑起来,需要先把项目跑起来,在终端dotnet下,再重新访问下nginx站点。

执行 sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
时出现:you must specify the -p option with the path to the policy file

请先检查SELinux是否被禁用掉了

在/etc/sysconf下有一个SeLinux文件,使用记事本打开,更改其中的SELINUX项的值就可以了。

SELINUX=disable  禁用SeLinux
SELINUX=enforcing  使用SeLinux
如果是禁用就设置为使用状态。

4.测试连接

将项目在终端运行起来,在本地机浏览器输入虚拟机的ip访问

也有可能会出现以下情况:

被location重定向到5001端口,而5001端口是系统分配给这个站点的Https端口。

在net core官网文档查到Startup类默认是建议使用HTTPS的,解决方法有二、一是你在centos上安装好HTTPS证书,二是注释掉Startup类中的app.UseHttpsRedirection(); 重新发布。

原文地址:https://www.cnblogs.com/zt102545/p/13940237.html