Hi Wang,

I hope that this link will help you to solve the problem:
https://stackoverflow.com/questions/19751313/forward-request-headers-from-nginx-proxy-server

You may check the tomcat access log to see what kind of traffic it received
from nginx to confirm that your issue is related to nginx (probably some
configuration change will help you to solve the problem)

Anyway, good that you did a test to verify that this issue is not related
to Tomcat. If the link does not help you to solve the problem,
you should put your question better in a nginx forum than in a tomcat forum.



Good luck.

Best regards,

Hua


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

> 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