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.conf
nginx的最上层默认配置文件,第一行就是如下语句
user nginx
他的意思就是以nginx
用户运行nginx。显然是不对的,我的VPS上根本没有nginx
这个用户。于是将其改成/home/USER/WEB
的拥有者用户。保存退出,重启nginx。网站终于正常了~~~。
在这里吸取的教训就是在linux下操作,一定要时刻注意文件权限,否则怎么死的都不知道。