【发布时间】:2018-08-08 22:09:57
【问题描述】:
我还是 nginx 的相对初学者,希望能得到一些帮助和澄清我正在做的事情。
假设我有 2 个 Node 应用,app1 和 app2。
我有一个生产服务器,但我想先在本地测试它。
目前 app1 监听 8000 端口,app2 监听 8001 端口。
所以目前,它们位于localhost:8000 和localhost:8001,并在生产服务器中以production.example.com:8000 和production.server.com:8001 访问。
我的问题是,如何隐藏端口号并将它们分配给特定的 URL?
我希望可以从生产服务器中的localhost/app1 和localhost/app2 以及production.example.com/app1 和production.server.com/app2 访问结果。
我不知道我在nginx.conf 中出了什么问题,所以我希望有人能在这个问题上帮助我。这些应用程序都有 HTML 表单,所以我需要它们发布到 production.example.com/app1 或类似 production.example.com/app2/download 的东西。由于每个应用程序中公共文件夹的位置,它们的 CSS 也会中断,因为它们只在 /public/css.css 中,而不是在 app2/public/css.css 中。
我可以通过在 Node 应用程序中分别添加 /app1 和 /app2 来更改所有表单操作和路由器获取/发布以及样式表引用,但这感觉就像我做错了什么,因为我不应该更改我的任何路由器信息。
这是我的nginx.conf 文件:
编辑:这就是我现在所拥有的:
server {
# ...
location /app1 {
rewrite ^/app1$ / break;
rewrite ^/app1/(.*) /$1 break;
proxy_pass http://127.0.0.1:8000;
}
location /app2 {
rewrite ^/app2$ / break;
rewrite ^/app2/(.*) /$1 break;
proxy_pass http://127.0.0.1:8001;
}
}
我仍然遇到相同的问题,即节点应用程序本身没有使用它们的上下文。
【问题讨论】:
标签: node.js nginx proxy reverse-proxy reverse