2 votes

Forcer Nginx à utiliser le port du navigateur lors de la redirection au lieu du port de mapping de docker

Lorsque je mappe le serveur Nginx avec des ports différents sur l'hôte et l'invité, la redirection de l'emplacement suit le port de l'invité au lieu du port de l'uri demandé.

Étape à reproduire :

$ cat /tmp/default.conf
server {
    listen       8080;
    server_name  localhost;
    location ~ ^/loveslash$ {
        return  301 $request_uri/;
    }
    location ~ ^/loveslash/$ {
        add_header Content-Type text/plain;
        return 200 'yayy!';
    }
    location / {
        add_header Content-Type text/plain;
        return 200 '¯\_()_/¯';
    }
}

$ docker run --name some-nginx -v /tmp/default.conf:/etc/nginx/conf.d/default.conf:ro -p 80:8080 --rm nginx

$ curl -i http://localhost/loveslash | grep Location
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0   165k      0 --:--:-- --:--:-- --:--:--  165k
Location: http://localhost:8080/loveslash/
  • Ce que je reçois : http://localhost/loveslash -> http://localhost:8080/loveslash/
  • Ce que je veux : http://localhost/loveslash -> http://localhost/loveslash/

2 votes

Essayez d'ajouter port_in_redirect off; a la server bloc.

1 votes

@RichardSmith ça marche. Merci.

0 votes

@RichardSmith J'ajouterais votre suggestion en tant que réponse, afin que les "kudos" puissent être donnés ;)

2voto

HugoFS Points 313

Comme vous utilisez les ports par défaut, vous pouvez demander à Nginx de supprimer simplement le numéro de port de l'URL lorsqu'il génère une redirection externe.

Par exemple :

server {
    listen 8080;
    port_in_redirect off;
    ...
}

参照 ce document pour les détails.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X