nginx代理传递到外部url

nnt7mjpx  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(194)

我已经在amazon ec2上配置了我的nginx的url www.example1.com。我需要代理传递www.example1.com/blog到我的博客主机www.example2.com/blog,它是在bluehost(粉碎主机)上托管的,而不改变浏览器中的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试图Map到IP而不是域,这是失败的原因,因为共享主机无法识别IP,但域名。
任何意见/帮助都将非常感激。

3bygqnnd

3bygqnnd1#

问题是因为proxy_set_header Host $http_host;中的$http_host使用了原始请求头中的主机,但您真正需要的是www.example2.com的主机。$proxy_host将使用proxy_pass指令中的主机。请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html底部的嵌入式变量
$代理主机
proxy_pass指令中指定的代理服务器的名称和端口;
它不适用于example1.com而适用于www.example1.com的原因是,您没有将值example1.com放在server_name指令中。

相关问题