Hi,
Company is testing nginx with a .net SOAP web service. The nginx and web
service runs on two different ports. The problem is the web service
returns the response with links that point to the web service’s own TCP
port instead of the port of the Nginx.
Here is the config being used:
// …
server
{
listen 89;
server_name mysolr;
location / {
proxy_pass http://mysolr/;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
In the above case, response comes back with all embedded links on port
80 rather than on 89.
Any help is appreciated~
Bing
Anyone please?
From: 冉兵
Sent: Monday, May 10, 2010 5:37 PM
To: [email protected]
Subject: proxy to a .Net webservice
Hi,
Company is testing nginx with a .net SOAP web service. The nginx and web
service runs on two different ports. The problem is the web service
returns the response with links that point to the web service’s own TCP
port instead of the port of the Nginx, i.e., the web service server does
not realize that requests come via a proxy on a different port.
Here is the config being used:
// …
server
{
listen 89;
server_name mysolr;
location / {
proxy_pass http://mysolr/;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
In the above case, response comes back with all embedded links on port
80 rather than on 89.
Any help is appreciated~
Bing
On Mon, May 10, 2010 at 05:37:58PM +0800, 冉兵 wrote:
listen 89;
server_name mysolr;
location / {
proxy_pass http://mysolr/;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Why do use so many header with remote address ?
BTW, the last X-Forwarded-For overrides the previous one.
}
}
In the above case, response comes back with all embedded links on port 80 rather than on 89.
You may try to set webservice to listen on 127.0.0.1:80 and set nginx
to listen on mysolr:80.
Also you may use
sub_filter http://mysolr:80/ http://mysolr:89/;
sub_filter_once off;
–
Igor S.
http://sysoev.ru/en/
Dear 冉兵,
I face the same problem as yours, please could you show me
configurations which worked for you?
Thanks
Posted at Nginx Forum:
Hi,
The sub_filter way worked.
Thanks
Bing
From: “Igor S.” [email protected]
Sent: Tuesday, May 11, 2010 3:42 PM
To: [email protected]
Subject: Re: proxy to a .Net webservice