我还是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
的地方。由于它们仅位于/public/css.css
中,而不位于app2/public/css.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;
}
}
我仍然遇到相同的问题,即节点应用程序本身未使用其上下文。
答案 0 :(得分:0)
因此,我具有与4-5个微服务相同的配置。这是我使用的配置。
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /ifttt {
rewrite ^/ifttt$ / break;
rewrite ^/ifttt/(.*) /$1 break;
proxy_pass http://127.0.0.1:8080;
}
location /actions {
rewrite ^/actions$ / break;
rewrite ^/actions/(.*) /$1 break;
proxy_pass http://127.0.0.1:5000;
}
location /events {
rewrite ^/events$ / break;
rewrite ^/events/(.*) /$1 break;
proxy_pass http://127.0.0.1:5050;
}
location / {
proxy_pass http://127.0.0.1:8081;
}
}
希望它可以作为建设性参考。我们拿一个,
location /actions {
rewrite ^/actions$ / break;
rewrite ^/actions/(.*) /$1 break;
proxy_pass http://127.0.0.1:5000;
}
因此,第一次重写仅匹配localhost/actions
并将其转发到http://127.0.0.1:5000
第二个匹配localhost/actions/<anything>
并将其转发到http://127.0.0.1:5000/<anything>
我认为您在正则表达式匹配之前缺少斜杠(/
)。
修改:
使用您的评论作为参考
索引位于/app1/index
页面位于/app1/index/flashfireblast
并且导航栏标题需要引用/app1/stylesheets/css.css
因此,要处理/app1/stylesheets/css.css
中的/app1/index/flashfireblast
,您需要添加../stylesheets/css.css
作为样式表href。
供参考:
如果当前目录为/var/www
1) /
:表示根。 /
2) ./
:表示当前目录。 /var/www
3) ../
:表示上一个目录。 /var/