Hi Hua,

       You are right, when tomcat listening port 80, then getServerPort return 
10001.
       So how to resolve this problem when I use nginx as a reverse-proxy?
       I write in nginx config file:
      “proxy_set_header   Host    $http_host;”  or  “proxy_set_header   Host    
$host:10001;”
       Then I write in jsp:
              var ProxyPort = "<%= request.getServerPort() %>"
              var header1 = "<%= request.getHeader("host") %>"
      When I visit the jsp it print:

            var ProxyPort = "80"

            var header1 = "xx.xxx.xx.xxx:10001"



      The definition of getServerPort() is to return the value after ‘:’ in 
host header,

       so maybe some code in getServerPort method could not process the host 
header correctly and getHeader method can get the correct header value at the 
same time?


>Hi Wang, A second application (nginx) is involved here.
>
>The problem can be related to nginx, nginx received a http traffic on 10001
>in access log does not mean that if forwards exactly the same original http
>request. Probably some configuration needs to be changed there. You should
>take a look in the nginx documentation about port forwarding.
>
>You may also skip using nginx and mapping port 10001 directly to tomcat
>port 8080. In your browser typing your http://domain:10001, to check the
>getServerPort() value.
>
>This will help you to investigate if it is a Tomcat issue or not.
>
>
>Best regards,
>
>Hua


On Thu, Jan 6, 2022 at 6:39 AM 王 静凯 <ly...@outlook.com> wrote:

> 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