Configure nginx localmente y cambie a una aplicación de arranque de primavera:
Prueba de contenido
Navegador visite abc.com
El proxy Nginx reenvía a localhost: 9999
Observe el contenido de getServerPort y getLocalPort y el encabezado en la aplicación de arranque de primavera
Código java de la aplicación Spring Boot
@RestController
@RequestMapping("/v1/ops")
public class DebugController {
@GetMapping("/test")
public void testPort(HttpServletRequest request){
System.out.println("" + request.getServerPort());
System.out.println("" + request.getLocalPort());
printHeader(request);
}
private void printHeader(HttpServletRequest request) {
Enumeration names = request.getHeaderNames();
System.out.println("============================================");
while(names.hasMoreElements()){
String name = (String) names.nextElement();
System.out.println(name + ":" + request.getHeader(name));
}
System.out.println("============================================");
}
}
Configuración de host local
Modificar / etc / hosts en el entorno ubuntu
Agregar un 127.0.0.1 abc.com
Entonces, cuando el navegador visita abc.com, en realidad visita 127.0.0.1
El puerto predeterminado 80 es el servidor nginx local que está visitando.
configuración nginx
Se agregó el siguiente párrafo:
server {
listen 80;
server_name abc.com;
location /v1/ops/ {
proxy_pass http://localhost:9999;
}
}
sudo nginx -t // comprobar la configuración
sudo nginx -s reload // configuración de la aplicación
Ejecutar prueba
El resultado es el siguiente
serverPort y localPort son ambos 9999
Modifique la configuración de nginx:
server {
listen 80;
server_name abc.com;
location /v1/ops/ {
proxy_pass http://localhost:9999;
proxy_set_header Host xxxx.com:7777;
}
}
serverPort se convierte en 7777
localPort sigue siendo 9999
Conclusión: el host en el encabezado afectará el valor de retorno de getServerPort