Web site not working on port redirection

Francis Daly francis at daoine.org
Fri May 10 13:55:10 UTC 2019


On Fri, May 10, 2019 at 07:57:14AM -0400, cox123456a wrote:

Hi there,

> When I click to change the module (from admin to analytics, for example),
> I'm loosing the port number:
> http://170.180.190.200:8000/admin => http://170.180.190.200/analytics  (Page
> breaks as the port is missing)

You can check the nginx logs to be sure; but what I suspect is happening
is that when you change to analytics, your browser makes a request
for http://170.180.190.200:8000/analytics, which gets a redirect to
http://170.180.190.200/analytics/. And the second one is the one that
fails for you, because you want it to keep the port from the Host:
header in the http redirection from nginx.

If that is the case...

> How can I configure NGINX to forcelly add the port number when I change the
> module?

I think that you cannot easily.

When nginx generates a http redirection, it can use the hostname from the
Host: header, and it can use the port that the request came to nginx on;
but it cannot (I think) use the port that was listed in the Host: header.

One possible way, which may or may not be useful in your case, would
be to change your nginx so that it listens on both port 80 and 8000;
and change your port forwarding so that [external] port 8000 is sent to
[nginx] port 8000 (instead of to the current [nginx] port 80).

With that config, then I think that internal things that talk to port
80 will continue to talk to port 80; while external things that talk to
port 8000, will have their redirects-from-nginx directed to port 8000
(because they are now talking to nginx-port-8000).

That is, in nginx, where you have

> server {
>   listen 80 default_server;

add an extra line

>   listen 8000 default_server;

and change this:

> My router configuration (page 8000 to 80):
> 
> https://unix.stackexchange.com/questions/518085/accessing-nginx-behind-a-virtual-server-looses-port-number/518183?noredirect=1#5181833

to go to port 8000 instead of port 80.

Untested by me, but it looks like it should work.

Good luck testing it!

	f
-- 
Francis Daly        francis at daoine.org


More information about the nginx mailing list