Portál AbcLinuxu, 8. května 2025 04:27
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.