我在端口5000上运行了nodejs。我还有另一个在端口8000上运行的app作为主应用程序
第一个是PHP应用程序,这是主要的。而nodeApp作为第二个应用程序。
所以,这是我的nginx sites-available / default文件:
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/analytics_dashboard/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /nodeApp/ {
root /root/nodeApp/source/front/dist/static;
rewrite ^/nodeApp/(.*) /$1 break;
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /static {
root /root/nodeApp/source/front/dist/static;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
所以,当我要去/主页面时,我可以访问php应用程序。
当我来/ nodeApp /我看到我的nodeApp的html页面。但是有403错误
像这样http://<my-server>/static/js/...
403 Forbidden错误。
这里是nginx错误日志:
"GET /static/js/app.b790250b5af64ad68f13.js HTTP/1.1" 403 192 "http://<my-server>/marser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
这里有我在nginx错误日志中的内容:
/root/nodeApp/source/front/dist/static/js/app.b790250b5af64ad68f13.js" failed (13: Permission denied), request: "GET /static/js/app.b790250b5af64ad68f13.js HTTP/1.1"
但是,我已经为chmod 777
为静态目录中的所有文件设置了权限。
我也尝试重写nginx sites-available / default文件来改变
location /static {
alias /root/nodeApp/source/front/dist/static;
}
但仍未成功。
所以,我的问题是:
如何在nginx中为第二个应用程序提供nodejs app静态文件?
答案 0 :(得分:0)
作为实验,您可以尝试启用自动索引并查看错误消息是否更改。如果由于某种原因您的请求是查找目录而不是文件,如果自动索引关闭,您将看到403错误。在服务器节顶部附近添加以下内容:
autoindex on;
如果nginx配置了--with-debug
(要检查nginx -V),请尝试通过在错误日志末尾添加“debug”来启用调试模式:
error_log /var/log/nginx/example.com.error.log debug;
这将追踪nginx如何处理请求。