在我修改 JS 文件后,nginx 总是给出 500 错误

在我修改 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 连接访问/编辑文件。

答案1

这最终是 Samba 的问题,而不是 nginx。我通过在 Samba 配置中添加以下内容解决了该问题:

oplocks = no
level2 oplocks = no

最初在以下 SO 线程中发现:https://stackoverflow.com/questions/10202567/nginx-resource-temporarily-unavailable-using-a-samba-share

相关内容