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.com
但 www.example1.com
不起作用的原因我猜是因为你没有将值 example1.com
放在 server_name
指令中。
我已经在 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.com
但 www.example1.com
不起作用的原因我猜是因为你没有将值 example1.com
放在 server_name
指令中。