Este prima dată când folosesc nginx și găsesc această situație destul de enigmatică. Site-ul meu este găzduit la web.example.com
și pentru a ajunge la backend, cererile sunt direcționate prin nginx ca un proxy invers. După procesarea prin nginx, adresa URL se schimbă la adresa URL a serverului nginx (proxy.example.com
) în loc să fie adresa URL a site-ului web.
Fluxul arată cam așa:
web.example.com -> nginx (proxy.example.com) -> backend (service.example.com)
Când înregistrez cererea în serviciul backend, pot vedea că x-forwarded-host este setat la proxy.example.com
. Este corect sau ar trebui setat web.example.com
Aici?
Fișierul nginx.conf este:
evenimente {
conexiuni_muncitor 1024;
}
http {
includ /etc/nginx/mime.types;
aplicație de tip_default/octet-stream;
log_format principal '$remote_addr - $remote_user [$time_local] $status'
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log principal;
server { # simplu reverse-proxy
asculta 80;
nume_server proxy.example.com;
locație /site {
proxy_set_header Gazdă $http_host;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-host $gazdă;
proxy_set_header x-forwarded-server $gazdă;
proxy_set_header x-real-ip $adresă_la distanță;
proxy_pass_request_headers activat;
proxy_pass http://service.example.com$request_uri;
}
}
}
Cum obțin adresa URL la care să revin web.example.com/site
după ce a trecut prin acest flux în loc să arate ca proxy.example.com/site
?
Mulțumiri.