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.