NGINX代理和NodeJS应用程序:href和sytylesheets和javascripts

问题描述:

我有一个节点应用程序有一个样式表,JavaScript和图像目录在主节点应用程序目录的公共目录中。NGINX代理和NodeJS应用程序:href和sytylesheets和javascripts

当index.html呈现时,对这些目录的HTML href调用失败,代理不知道如何路由它们,因为该位置未在href中提供。

所以我很难明白这是Nginx还是Node问题。我可以代理其他网络服务器,如Tomcat,不存在此问题。

渲染HTML:

<link rel='stylesheet' href='/stylesheets/foundation.min.css' /> 
<link rel='stylesheet' href='/stylesheets/motion-ui.css' /> 
<link rel='stylesheet' href='/stylesheets/foundation-icons/foundation-icons.css' /> 
<link rel='stylesheet' href='/stylesheets/js-image-slider.css' /> 
<link rel='stylesheet' href='/stylesheets/generic.css' /> 
<link rel='stylesheet' href='/stylesheets/style.css' /> 
<script src="/javascripts/js-image-slider.js"></script> 
<script src="/javascripts/vendor/modernizr.js"></script> 

NGINX:位置

我曾尝试基于博客上这么多的变化,但发现没有人的工作。

location/{ 
     root html; 
     index index.html index.htm; 
    } 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root html; 
    } 

    #Node App Server : latest try 
    location ~ /internship { 
     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_pass http://127.0.0.1:3000; 
    } 

    #Tomcat server 
    location /bi { 
      rewrite ^/bi(.*) /$1 break; 
      proxy_pass http://127.0.0.1:5566; 
      proxy_set_header Host $host; 
    } 
+0

发现我需要从href路径中删除前导'/'。 – James

看来这可能是一个好主意,你可以多读一点Nginx。 至于你的问题,似乎你没有任何东西可以处理回送任何文件作为回应。 看着Nginx的文档显示回访图像下面的例子:

location /images/ { 
    try_files $uri /images/default.gif; 
} 

这个例子寻找的/图像位置前缀/,然后它会尝试找到其他请求的位置返回的默认图像。 您可以对样式表和js进行类似的请求。

看看在try_files documentation here.

不过,我会花更多的时间来研究一下这些指令的意思,因为你可以很容易地通过不拒绝访问您的网站的其他部分打开一个安全漏洞。