Linux
在我更改 JS 文件後,nginx 總是給出 500 錯誤
我在本地 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