nginx 代理传递给外部 url

nginx proxy pass to external url

我已经在 amazon ec2 上为 url www.example1.com . I need to proxy pass www.example1.com/blog to my blogging host www.example2.com/blog 配置了我的 nginx,它托管在 bluehost(shred hosting)上,没有更改浏览器中的 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;
}

运气不好。

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

任何 input/help 将不胜感激。

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

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

$proxy_host

name and port of a proxied server as specified in the proxy_pass directive;

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