如何在三个节点应用程序前面用NGINXpipe理相关的CSSpath

我们有几个节点应用程序,我们试图在NGINX之后进行代理。 这些节点应用程序中的每一个都是独立开发的,所有的相对path都指向了/的文档根目录。

有没有办法让nginx帮忙提供这些静态的CSS / JS文件?

nginx.conf

worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream app1 { server localhost:3001; } upstream app2 { server localhost:3002; } upstream app3 { server localhost:3003; } server { listen 8180; server_name localhost; location /app1 { proxy_pass http://app1/; } location /app2 { proxy_pass http://app2/; } location /app3 { proxy_pass http://app3/; } } } 

app1 index.html

  <html> <head> <title>Express</title> <link rel="stylesheet" href="/stylesheets/style.css"> </head> <body> <h1>Express</h1> <p>Welcome to Express</p> <p class="foo">A simple test to see if the app is served correctly</p> </body> </html> 

正如你所看到的,app1的index.html指向一个“/stylesheets/style.css”的相对path。 Nginx把它放在http://localhost:8180/app1后面,这样一旦html被传送给客户端,path就不会被识别。

我意识到我可以在所有三个应用程序中更改html以使用映射到css的完整path,例如: http://localhost:8180/app1/stylesheets/styles.css

我只是好奇,如果有人对此有任何的意见。 提供多个应用程序时,处理这类问题的正确方法是什么?

我有一个类似的问题,发现这个reddit线程 。 我有一个节点快递应用程序。 通过删除href值(相对路径而不是绝对路径)中的前导斜杠,它能够建立正确的路径。 在nginx中的位置设置:

 location /app1/ { proxy_pass http://localhost:3002/; alias /app1/client; } 

并与<link rel="stylesheet" href="/css/theme.css">浏览器将尝试加载mydomain.com/css/theme.css和失败(错误的路径,没有什么),但与<link rel="stylesheet" href="css/theme.css">浏览器将成功加载mydomain.com/app1/css/theme.css