目录
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(); 重新发布。