部署上線測試的Node項目,使用nginx反向代理時出現靜態資源403錯誤,本地配置正確,線上同樣的配置卻產生了錯誤.配置如下:
upstream nodeblog{
server 127.0.0.1:3000;
keepalive 65;
}
server {
listen 443;
ssl on;
server_name ;
ssl_certificate ;
ssl_certificate_key ;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection '';
proxy_pass http://nodeblog;
}
location ~ .*\.(css|js|jpg|png|gif)$ {
alias "/root/nodeApp/public/";
expires 3d;
}
}
依照提示設定了該目錄下所有檔案777權限,依舊是403錯誤
找到一個原因,因為是在root權限下操作的,可能是nginx沒有該目錄的權限.個人伺服器因此也沒有分配其他用戶,所以打開nginx.conf中第一行user nobody修改為user root使得nginx以root權限運行.
這肯定不是好的解決方案,知識大致了解了,403的原因,nginx進程沒有當前靜態資源資料夾的相關權限,需要單獨制定nginx對該目錄的權限.
希望有好的解決方案
原因是錯誤運用了
alias
指令。官方文件