proxy_pass & getServerPort problems

Jiang Web lists at ruby-forum.com
Thu Feb 13 01:00:48 UTC 2014


Francis Daly wrote in post #1136476:
> On Wed, Feb 12, 2014 at 08:51:13AM +0100, Jiang Web wrote:
>
> Hi there,
>
>> location /NetWeb/ {
>> proxy_pass http://w3new_cls/NetWeb/;
>> proxy_redirect off;
>> proxy_set_header Host $host:80;
>
>> when I access the URL: http://w3.huawei.com/NetWeb and the application
>> use the <%request.getServerPort%> to get the server port is 9090, Not
>> the port 80.
>> But I want to get the port is w3.huawei.com:80, How can I to resovle the
>> problems.
>
> getServerPort is not an nginx thing, and nginx probably cannot affect
> what it reports.
>
> What do you do with the result of getServerPort?
>
> Would using something like getHeader("Host") be adequate instead?
>
>   f
> --
> Francis Daly        francis at daoine.org


When I access the application http://w3.huawei.com/NetWeb. the 
application will 302(relocation) to 
https://login.huawei.com/login?redirect=xxxxxxxxx to make the user login 
the system(the http://login.huawei.com/login is our sso system). The 
xxxxxxx in the URI is the last request url(we think is 
http://w3.huawei.com/NetWeb), and we get the last request url(in java 
program) using <%request.getRequestURL%>, but the result is 
xxxxxxxx=http://w3.huawei.com:9090/NetWeb not the 
http://w3.huawei.com/NetWeb. We test it and found that:
<%request.getServerName%> is w3.huawei.com
<%request.getServerPort%> is 9090
<%request.getURI%> is /NetWeb
so we think that when we use the nginx as a reverse proxy to proxy the 
request, the request.getServerPort is 9090 not 80. If we use the apache 
as a reverse proxy to proxy the request adding parameter 
"ProxyPreserveHost on",  the request.getServerPort is 80.

Thanks for help and reply.

-- 
Posted via http://www.ruby-forum.com/.



More information about the nginx mailing list