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

How to choose the right MySQL datetime type to store your time

When building a database and writing a program, i...

18 common commands in MySQL command line

In daily website maintenance and management, a lo...

Detailed explanation of HTML form elements (Part 2)

HTML Input Attributes The value attribute The val...

Vue globally introduces scss (mixin)

Table of contents 1. mixin.scss 2. Single file us...

Background image cache under IE6

CSS background image flickering bug in IE6 (backg...

Comprehensive summary of Vue3.0's various listening methods

Table of contents Listener 1.watchEffect 2.watch ...

Win10 64-bit MySQL8.0 download and installation tutorial diagram

How do I download MySQL from the official website...

Solutions to MySQL OOM (memory overflow)

OOM stands for "Out Of Memory", which m...

Two implementations of front-end routing from vue-router

Table of contents Mode Parameters HashHistory Has...

td width problem when td cells are merged

In the following example, when the width of the td...

Don't forget to close the HTML tag

Building web pages that comply with Web standards ...

Five ways to traverse JavaScript arrays

Table of contents 1. for loop: basic and simple 2...

mysql method to view the currently used configuration file my.cnf (recommended)

my.cnf is the configuration file loaded when MySQ...