![网站通过 Nginx 代理后使用错误的 URL](https://linux22.com/image/767598/%E7%BD%91%E7%AB%99%E9%80%9A%E8%BF%87%20Nginx%20%E4%BB%A3%E7%90%86%E5%90%8E%E4%BD%BF%E7%94%A8%E9%94%99%E8%AF%AF%E7%9A%84%20URL.png)
这是我第一次使用 nginx,我发现这种情况相当令人费解。我的网站托管在web.example.com
,为了到达后端,请求通过 nginx 作为反向代理进行路由。通过 nginx 处理后,URL 更改为 nginx 服务器的 URL(proxy.example.com
),而不是网站的 URL。
该流程看起来是这样的:
web.example.com -> nginx (proxy.example.com) -> 后端 (service.example.com)
当我在后端服务中记录请求时,我可以看到 x-forwarded-host 设置为proxy.example.com
。 这是正确的吗?还是应该在这里设置为web.example.com
?
nginx.conf 文件是:
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$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 main;
server { # simple reverse-proxy
listen 80;
server_name proxy.example.com;
location /site {
proxy_set_header Host $http_host;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header x-forwarded-host $host;
proxy_set_header x-forwarded-server $host;
proxy_set_header x-real-ip $remote_addr;
proxy_pass_request_headers on;
proxy_pass http://service.example.com$request_uri;
}
}
}
web.example.com/site
我如何才能让 URL在经过此流程后返回,而不是显示为proxy.example.com/site
?
谢谢。