[英]Hiding Node app port numbers on one domain with nginx reverse proxy
我仍然是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也由於每個應用程序中公用文件夾的位置而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;
}
}
我仍然遇到相同的問題,即節點應用程序本身未使用其上下文。
因此,我具有與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/index/flashfireblast
/app1/stylesheets/css.css
處理/app1/stylesheets/css.css
,您需要添加../stylesheets/css.css
作為樣式表href。
以供參考:
如果當前目錄是/var/www
1) /
:表示根。 /
2) ./
:表示當前目錄。 /var/www
3) ../
:表示上一個目錄。 /var/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.