Nginx: proxy_pass ignoriert Port

Nginx: proxy_pass ignoriert Port

Ich habe eine Anwendung mit Swagger aktiviert localhost:8080/swagger/.

Ich brauche eine Weiterleitung localhost:80zur tatsächlichen Swagger-URL, also localhost:8080/swagger/richte ich einen Nginx-Reverse-Proxy ein:

server {
    listen 80;

    server_name=_;
    
    location / {
           proxy_pass http://localhost:8080/swagger/;
           proxy_redirect off;
           proxy_set_header Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Wenn ich also eingebe, localhost:80erhalte ich den Code 301 und werde weitergeleitet zu localhost:80/swagger/index.html. Aber ich brauche den Port 8080. Warum ignoriert Nginx den Port im Proxy-Pass?

Antwort1

Sie können die Abhördirektive für den Serverblock, der auf Port 80 lauscht, so ändern, dass auch die Portnummer enthalten ist:

listen 80 default_server;

Dadurch lauscht Nginx auf Port 80 und leitet den Verkehr an http://localhost:8080/swagger/ weiter, während die Portnummer in der URL beibehalten wird.

verwandte Informationen