>> Hi chris,
>>
>>> I use httpServletRequest.getServerPort() to get the port in my jsp.
>>> When the tomcat listen 8080 and nginx listen 80.
>>> Nginx has set ‘proxy_set_header Host $http_host’.
>>
>>> What is the value of $http_host?
>>
>>       The $http_host is ‘externalIP:10001’ (I print it in access_log of 
>> nginx to make sure that it is a correct valve.)
>>       I use httpServletRequest.getHeader(“Host”) in java and it can print 
>> the right value too. But as I know the getServerPort should print the number 
>> after ‘:’ of ‘Host’ Header.
>>       So I don’t know what’s the wrong.
>>
>>       And today I found another similar situation.
>>       The server has a Internet IP and Tomcat listening 8080 and nginx 
>> listening 81. So there are no port mapping.
>>       At this time getServerPort() still return 80.
>>
>>> Then the port  80 mapping to Internet via 10001.
>>> Use httpServletRequest.getHeader(“Host”) I can get the correct value of 
>>> Host header �C “InternetIP:10001”.
>>> But  httpServletRequest.getServerPort() did not return 10001 and return 80.
>>> How could I solve it?
>>> Btw, to set proxyPort in connector can not take effect. But proxyName work.
>>
>>> Have you read about the RemoteIPValve?
>>     The RemoteIPValve seems to be used for get the real client IP, but I 
>> just need to get the correct port which client use to visit my website.
>>
>> Forgive my poor English and I hope you can understand what I say. (^-^)
>
>Something does not make sense:
>
>1. You have nginx listening on port 80, proxying to port 100001
>
>2. You have a Tomcat <Connector> on port 8080:
>     <Connector port="8080" protocol="HTTP/1.1"
>                connectionTimeout="20000"
>                redirectPort="8443" maxHttpHeaderSize="8192"
>maxThreads="4000" minSpareThreads="1000" maxSpareThreads="2000"
>enableLookups="false" acceptCount="2000" URIEncoding="UTF-8"
>maxPostSize="4194304" />
>
>If Tomcat is listening on port 8080, how is nginx reaching it on port 10001?

Sorry for my poor English.
I re-explain the problem:

I mean the nginx listening on port 80 and tomcat listening on 8080.
So the visitors in the LAN can use 80 to visit my website.
Then the port 80 make a port mapping to port 10001.
So the visitors use 10001 to visit my website via internet.
At this time the browser send the Host header with value ‘domain:10001’.
The nginx print the correct value ‘domain:10001’ in nginx access log.
The jsp print the correct value ‘domain:10001’ when I use 
httpServletRequest.getHeader(“Host”).
According to the definition of ‘getServerPort()’, it should return 10001 but 
now it return 80.
What’s more, the port 80 not relate to nginx, just bcz I am using the http 
protocol.

In another server I found one more situation.
The server has an internet IP and Tomcat listening 8080 and nginx listening 81.
So there are no port mapping.
The visitors use ‘http://domain:81’ to visit the website.
At this time getServerPort() still return 80.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to