Am construit o aplicație web care va asculta pe un port și va gestiona solicitările HTTP. De exemplu, dacă îl rulez local la 127.0.0.1:3000
. Pot accesa cu http://127.0.0.1:3000/path/within/app
pe browserul meu. Aș dori să-l implementez pe unul dintre serverele mele, care este configurat cu nginx
pentru a gestiona toate solicitările primite (și TLS) și a le transmite către diferite aplicații (ascultând la http://127.0.0.1:xxx
). În mod normal, aș da fiecărei aplicații un subdomeniu diferit (de exemplu, acces aplicația 1
cu app1.example.com
și aplicația 2
cu app2.example.com
), dar ar fi mai convenabil dacă pot folosi subpath (de exemplu, acces aplicația 1
cu example.com/app1
și aplicația 2
cu example.com/app2
). Dar nu sunt sigur cum să-l configurez.
Fișierul meu de configurare actual este ca următorul. Să presupunem că aplicația mea ascultă la 127.0.0.1:3000
.
locație ^~ /app1 {
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Gazdă $http_host;
proxy_redirect dezactivat;
proxy_pass http://127.0.0.1:3000/;
}
Aș dori să realizez următoarele.
- Când accesez
https://example.com/app1
, va fi echivalent cu accesarea http://127.0.0.1:3000
.
- Când accesez
https://example.com/app1/path/within/app
, va fi echivalent cu acces http://127.0.0.1:3000/path/within/app
.
Cu toate acestea, cu fișierul de configurare menționat mai sus, funcționează doar prima parte. Dacă accesez https://example.com/app1/path
, aplicația mea se plânge că a fost http://127.0.0.1:3000//path
care de fapt sunt accesate și nu știe cum să se descurce //cale
.
Aș prefera să nu modific nicio parte a aplicației mele, astfel încât să poată rula independent dacă am decis să-i dau un subdomeniu în viitor și mă așteaptă la o remediere cu modificarea doar a fișierului de configurare nginx, dacă este posibil. În plus, sunt conștient de problema că orice link-uri pe care se poate face clic generate de aplicație va trebui, de asemenea, să gestioneze o cale secundară, dar această aplicație este suficient de simplă încât aceasta nu este o problemă.
Mulțumiri.