Portál AbcLinuxu, 26. října 2025 22:36
https://firma.com/, kde je i stranka produktu https://firma.com/produkt/. Pak mam server B, na ktery mam namirenou domenu produkt.com, a ten chci pouzit jen jako reverzni proxy pro dotazy jako http://produkt.com, http://www.produkt.com, ktery maji smerovat prave na stranku https://firma.com/produkt/.
Config nginxu na serveru B je:
server {
listen 80;
listen [::]:80;
server_name produkt.com www.produkt.com;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
large_client_header_buffers 4 32k;
client_max_body_size 0;
location / {
# proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass https://firma.com/produkt/;
}
}
I kdyz mam ale proxy_redirect off;, tak se proxy_pass chova jako 301, tj. v browseru se mi URL zmeni na https://firma.com/produkt/, co nechci. Pokud odkomentuju proxy_set_header Host $host; tak se stale proxy_pass chova jako redirect a navic se zacykli s URL https://produkt.com/produkt/produkt/produkt/produkt/produkt/...
Poznamka: Server B je container bezici v hostu, kde bezi jeste jeden nginx, ktery s proxy_pass funguje jak ma (zadnej redirect) a navic transparentne pridava SSL (80->443).
Diky za rady.
Řešení dotazu:
server {
listen 80;
server_name produkt.com www.produkt.com;
location / {
proxy_pass https://firma.com/produkt;
proxy_redirect default;
}
}
proxy_redirect default;
proxy_redirect default; za proxy_pass, tak se stale redirectuje a navic se to zase zacykli (a to i bez proxy_set_header Host $host;).
Ohledne toho, ze by me presouvala primo firma.com jsem premyslel, ale to jsem vedel, ze se nedeje (bezi tam jinej webserver, takze jsem videl v hlavickach, ze za to muze nejakej nginx). Ale navedlo me to na dukladnejsi check, jestli se redirect deje opravdu na serveru B a nebo na nginxu, co bezi na hostu, ve kterym bezi server B jako kontejner. A svete div se, deje se to na tom hostu a ne v tom containeru (co mi total nedava smysl, protoze "v ostatnich pripadech", ktery jsem kontroloval, se tam proxy_pass deje spravne).
Kazdopadne diky moc na navedeni, jdu dukladneji zkoumat, co se deje na tom hostu.
proxy_pass v kazde z konfiguraci nginxu pouzit sprave http (host->server B) a https (server B->firma.com).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.