Solution to nginx not jumping to the upstream address

Solution to nginx not jumping to the upstream address

Preface

Today I encountered a very strange problem in nginx. When the front-end tomcat jumped to the page, it jumped to the upstream address and reported 404 directly, but some page accesses were normal.

http://tomcat/tomcat-web/account/index

If the access is normal using the intranet ip directly, it can be determined that it is a problem with nginx. The nginx configuration is as follows

upstream tomcat { 
  server 192.168.11.172:8061; 
  server 192.168.11.172:8062;
  ip_hash;  
}  
 
 server { 
  listen 8060;  
  server_name www.example.com;

  location / { 
    proxy_pass http://tomcat; 
    proxy_set_header Host $host:8060;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    index index.html index.htm; 
  } 
 }

After investigation, it was found that in the backend Java code, this address was redirected, and request.getServerPort() was used. If it was redirected through nginx, the correct front-end port could not be obtained, and the default return was still 80. If the default listening port of nginx is not 80, response.sendRedirect cannot jump to the correct address.

response.sendRedirect(getBasePath(request) + "account/index");
  private String getBasePath(HttpServletRequest request) {
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName()
        + ":" + request.getServerPort() + path + "/";
    return basePath;
  }

The solution is to add the port number to the nginx configuration file proxy_set_header

proxy_set_header Host $host:$proxy_port;

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Detailed explanation of the solution for NGINX to jump from https to http
  • How to redirect URL using nginx rewrite
  • How to redirect HTTP 301 to a domain name with www in Nginx server
  • How to force nginx to use https access (http jumps to https)
  • How to configure Nginx page redirection according to different browser languages
  • Detailed explanation of nginx to solve the problem of home page jump
  • Detailed explanation of nginx 301 redirect to domain name with www
  • How to redirect to https through nginx load balancing
  • Using Nginx's map command to redirect pages
  • Solve the problem of only redirecting to the home page when deploying thinkPHP 5 with nginx
  • Example code for using Nginx to implement 301 redirect to https root domain name
  • Nginx prohibits direct access via IP and redirects to a custom 500 page
  • Detailed explanation of Nginx rewrite jump application scenarios
  • Detailed explanation of how to enable HSTS in nginx to force the browser to redirect to HTTPS access
  • Implementation of rewrite jump in nginx
  • Detailed explanation of location matching and rewrite redirection in Nginx
  • Nginx hidden redirect (browser URL remains unchanged after redirection)

<<:  Implementation of the function of the vue circular percentage progress bar component

>>:  Analysis of slow insert cases caused by large transactions in MySQL

Recommend

Analysis of three parameters of MySQL replication problem

Table of contents 01 sql_slave_skip_counter param...

Detailed explanation of how to efficiently import multiple .sql files into MySQL

MySQL has multiple ways to import multiple .sql f...

How to view the storage location of MySQL data files

We may have a question: After we install MySQL lo...

JavaScript implements three common web effects (offset, client, scroll series)

Table of contents 1. Element offset series 2. Ele...

Solution to blank page after Vue packaging

1. Solution to the problem that the page is blank...

Detailed explanation of Vue-Jest automated testing basic configuration

Table of contents Install Configuration Common Mi...

How to Enable or Disable Linux Services Using chkconfig and systemctl Commands

This is an important (and wonderful) topic for Li...

Use of Linux watch command

1. Command Introduction The watch command execute...

CSS margin overlap and how to prevent it

The vertically adjacent edges of two or more bloc...

js to achieve a simple lottery function

This article shares the specific code of js to im...

Detailed explanation of nginx optimization in high concurrency scenarios

In daily operation and maintenance work, nginx se...

MySql 8.0.11 installation and configuration tutorial

Official website address: https://dev.mysql.com/d...

Source code reveals why Vue2 this can directly obtain data and methods

Table of contents 1. Example: this can directly g...

Detailed example of MySQL exchange partition

Detailed example of MySQL exchange partition Pref...