javascript - nginx反向代理静态资源403错误?
问题描述
部署上线测试的Node项目,使用nginx反向代理时出现静态资源403错误,本地配置正确,线上同样的配置却产生了错误.配置如下:
upstream nodeblog{server 127.0.0.1:3000;keepalive 65;}server {listen 443;ssl on;server_name ;ssl_certificate ;ssl_certificate_key ;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ;ssl_session_timeout 5m;ssl_prefer_server_ciphers on;location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-Nginx-Proxy true;proxy_set_header Connection ’’;proxy_pass http://nodeblog;}location ~ .*.(css|js|jpg|png|gif)$ {alias '/root/nodeApp/public/';expires 3d;}}
按照提示设置了该目录下所有文件777权限,依旧是403错误
问题解答
回答1:找到一个原因,因为是在root权限下操作的,可能是nginx没有该目录的权限.个人服务器因此也没有分配其他用户,所以打开nginx.conf中第一行user nobody修改为user root使得nginx以root权限运行.
这肯定不是好的解决方案,知识大致了解了,403的原因,nginx进程没有当前静态资源文件夹的相关权限,需要单独制定nginx对该目录的权限.希望有好的解决方案
回答2:原因是错误运用了alias指令。官方文档
If alias is used inside a location defined with a regular expressionthen such regular expression should contain captures and alias shouldrefer to these captures (0.7.40)http://nginx.org/r/alias
试下以下配置
location ~ .*.(css|js|jpg|png|gif)$ {alias '/root/nodeApp/public/$1';expires 3d;}
相关文章:
1. python - 关于beautifulsoup获取文档内容2. node.js - ionic2 创建项目 ionic server 报这个错 有朋友可以帮忙看看吗!3. dockerfile - 为什么docker容器启动不了?4. 网页爬虫 - Python小白用Scrapy爬虫返回的是空元素,请问各位大神哪里出了问题?5. mysql里的大表用mycat做水平拆分,是不是要先手动分好,再配置mycat6. debian - docker依赖的aufs-tools源码哪里可以找到啊?7. mysql - 如何在数据库里优化 汉明距离 查询?8. android - java tm platform se binary 占用很多内存9. python flask做的文件系统上传系统,路径没错,文件列表加载不出来,error 1005310. node.js - nodejs连接mysql,输入指令为什么
