nginx无法获取静态资源

我的博客网站使用nginx作为服务器,图片、JS、CSS等静态资源直接交给nginx处理,其余动态资源用反向代理转发给后台自己写的python博客程序处理。 修改/etc/nginx/conf.d/default.conf默认配置文件如下,假设网站根目录为/home/USER/WEB

server {
    listen       80;
    server_name  localhost cashqian.net www.cashqian.net;

    root         /home/USER/WEB;
    access_log   /home/USER/WEB/log/access_log;
    error_log    /home/USER/WEB/log/error_log;

    # 防止外链
    location ~ ^/static/upload/ {
        valid_referers none blocked cashqian.net www.cashqian.net ~\.google\. ~\.baidu\.;
        if ($invalid_referer) { return 404; }
        root /home/USER/WEB;
    }

    # 处理静态文件
    location ~ ^/static/ {
        root /home/USER/WEB;
    }

    # 处理动态文件
    location / {
        proxy_pass       http://127.0.0.1:9000;  # 这是自己写的python博客程序监听的地址和端口
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

以上配置文件都没什么好说的,网上都有很多介绍了,理论上这个配置文件是没有问题的。但是实际访问网站的时候,静态文件总是获取不到。查了很多资料都没有帮助。

然后在这篇文章里提到了权限问题,顿时恍然大悟。

查看error_log文件,里面对静态文件的访问日志确实是说Permission denied。遂打开/etc/nginx/nginx.confnginx的最上层默认配置文件,第一行就是如下语句

user nginx

他的意思就是以nginx用户运行nginx。显然是不对的,我的VPS上根本没有nginx这个用户。于是将其改成/home/USER/WEB的拥有者用户。保存退出,重启nginx。网站终于正常了~~~。

在这里吸取的教训就是在linux下操作,一定要时刻注意文件权限,否则怎么死的都不知道。


CashQian Blog

欢迎来到我的个人博客网站

友情链接

Powered by Python Blog. Copyright © 2016.

www.cashqian.net. All rights reserved.