Linux

在我更改 JS 文件後,nginx 總是給出 500 錯誤

  • September 8, 2014

我在本地 CentOS 6.3 伺服器上執行 nginx。我有一個載入到網頁中的特定 javascript 文件。如果我更改 javascript 文件並刷新網頁,我總是會收到 500 錯誤。然後當我再次刷新它時,JS文件載入得很好。

稍後,如果我再次更改 JS 文件,並刷新瀏覽器,同樣的 500 錯誤。一次又一次地刷新,它載入得很好。它只在第一次刷新時給出 500 錯誤。

為什麼是這樣?這是我的伺服器配置:

server {

       listen 80;
       server_name www.mysite.local;

       rewrite ^(.*) http://mysite.local$1 permanent;
}

server {

       listen          80;
       server_name     mysite.local;

       access_log      /var/log/nginx/mysite.local/access.log;
       error_log       /var/log/nginx/mysite.local/error.log;
       rewrite_log     on;

       root            /vhosts/mysite/mysite.local/public;
       index           index.php;

       # Heres my redirect, try normal URI and then our Laravel urls.

       location / {
               try_files $uri $uri/ /index.php?$query_string;
       }

       include         /etc/nginx/templates/other;

這是包含文件:

if (!-d $request_filename) {
       rewrite ^/(.+)/$ /$1 permanent;
}

location ~ \.php$ {
       include /etc/nginx/fastcgi_params;
       fastcgi_pass  127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~ /\.ht {
       deny all;
}

錯誤日誌:

2014/09/06 23:19:58 [crit] 27884#0: *29935 open() "/vhosts/mysite.local/public/js/testfile.js" failed (11: Resource temporarily unavailable), client: 192.168.1.51, server: mysite.local, request: "GET /js/testfile.js HTTP/1.1", host: "mysite.local", referrer: "http://mysite.local/some/page"

我是唯一連接到伺服器的人。沒有其他流量。保存文件後是否立即刷新頁面或等待(例如 15 秒或其他時間)都沒有關係。第一次刷新總是500錯誤。

我正在通過 Samba 連接訪問/編輯文件。

這最終成為 Samba 的問題,而不是 nginx。我通過將以下內容添加到我的 Samba 配置中解決了這個問題:

oplocks = no
level2 oplocks = no

最初在以下 SO 執行緒中找到:https ://stackoverflow.com/questions/10202567/nginx-resource-temporarily-unavailable-using-a-samba-share

引用自:https://serverfault.com/questions/626789