Reputation: 482
I have configured my nginx on amazon ec2 for the url www.example1.com . I need to proxy pass www.example1.com/blog to my blogging host www.example2.com/blog which is hosted on bluehost ( shred hosting ) without changing the url in browser. Is it possible ?
I tried many different combinations like
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;
}
without any luck.
I could see in the log that nginx is trying to map to the IP instead of the domain which is the reason for the failure as shared hosting cannot recognize the ip but domain name.
Any input/help will be really appreciated.
Upvotes: 23
Views: 34078
Reputation: 1582
The problem is because $http_host in proxy_set_header Host $http_host;
uses the host in your original request header, but what you really need is the host for www.example2.com. $proxy_host will use the host in your proxy_pass
directive. see Embedded Variables at the bottom
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;
And the reason it is not working for example1.com
but www.example1.com
I guess is because you didn't put the value example1.com
in server_name
directive.
Upvotes: 15