Nodejs Nginx提供静态文件

时间:2017-12-03 12:41:52

标签: node.js express nginx

我在端口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静态文件?



附:
我已经阅读过这些文章:firstsecondthirdfourthfifth

1 个答案:

答案 0 :(得分:0)

作为实验,您可以尝试启用自动索引并查看错误消息是否更改。如果由于某种原因您的请求是查找目录而不是文件,如果自动索引关闭,您将看到403错误。在服务器节顶部附近添加以下内容:

autoindex on;

如果nginx配置了--with-debug(要检查nginx -V),请尝试通过在错误日志末尾添加“debug”来启用调试模式:

error_log   /var/log/nginx/example.com.error.log debug;

这将追踪nginx如何处理请求。