网站通过 Nginx 代理后使用错误的 URL

网站通过 Nginx 代理后使用错误的 URL

这是我第一次使用 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

谢谢。

相关内容