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