nginx 代理传递给外部 url

Amr*_*tel 11 reverse-proxy nginx

我已经在 amazon ec2 上为网址 www.example1.com 配置了我的 nginx。我需要将 www.example1.com/blog 代理传递给我的博客主机 www.example2.com/blog,该主机托管在 bluehost(shred 托管)上,而无需更改浏览器中的 url。是否可以 ?

我尝试了很多不同的组合,比如

     location /blog{
            proxy_pass http://www.example2.com;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)

}

没有任何运气。

我可以在日志中看到 nginx 试图映射到 IP 而不是域,这是失败的原因,因为共享主机无法识别 ip 但无法识别域名。

任何输入/帮助将不胜感激。

Lut*_*ion 12

我会在这里给出我的答案。

您遇到的问题是因为 $http_host inproxy_set_header Host $http_host;使用了您原始请求标头中的主机,但您真正需要的是 www.example2.com 的主机。$proxy_host 将在您的proxy_pass指令中使用主机。请参阅 底部的 嵌入式变量http://nginx.org/en/docs/http/ngx_http_proxy_module.html

$proxy_host

proxy_pass 指令中指定的代理服务器的名称和端口;

它不起作用的原因,example1.comwww.example1.com我猜是因为你没有把值example1.com放在server_name指令中。