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(); 重新發布。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章