Nginx Domain Name Configures 301 Jumps for Non-80 Ports

  nginx

Order

There is a ng configured with the domain name of xixicat.com and the port is 80; Another specific service configured by ng, such as /article, has a port of 8080.

Configuration

 server {
        listen       80;
        server_name  xixicat.com;

        location / {
            
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.99.100:8080 ;
        }

    }
  • Article service

 server {
        listen       8080;
        server_name  xixicat.com;

        location / {
            return 301 /article ;
        }
        
        location /article {
            alias   html/article;
            index  index.html index.htm;
        }

    }

Problems and Solutions

If we visit xixicat.com/article at this time, then 301 will go to xixicat.com:8080/article. This is not what we want. How can we solve it?

 server {
        listen       80;
        server_name  xixicat.com;
        proxy_redirect http://xixicat.com:8080/ /; 
        location / {
            
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://192.168.99.100:8080 ;
        }

    }