我已经在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,但域名。
任何意见/帮助都将非常感激。
1条答案
按热度按时间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
指令中。