搜尋

首頁  >  問答  >  主體

javascript - nginx反向代理靜態資源403錯誤?

部署上線測試的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錯誤

为情所困为情所困2789 天前965

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-06-28 09:24:47

    找到一個原因,因為是在root權限下操作的,可能是nginx沒有該目錄的權限.個人伺服器因此也沒有分配其他用戶,所以打開nginx.conf中第一行user nobody修改為user root使得nginx以root權限運行.

    這肯定不是好的解決方案,知識大致了解了,403的原因,nginx進程沒有當前靜態資源資料夾的相關權限,需要單獨制定nginx對該目錄的權限.
    希望有好的解決方案

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-28 09:24:47

    原因是錯誤運用了alias指令。
    官方文件

    If alias is used inside a location defined with a regular expression
    then such regular expression should contain captures and alias should
    refer to these captures (0.7.40)

    試下以下配置
            location ~ .*\.(css|js|jpg|png|gif)$ {
                    alias "/root/nodeApp/public/";
                    expires 3d;
            }

    回覆
    0
  • 取消回覆