Je configure donc un chemin virtuel lorsque je pointe vers une application node.js dans mon conf. Nginx. la section pertinente ressemble à ceci:
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Fonctionne très bien, sauf que lorsque mon application node.js (une application express) appelle une redirection.
Par exemple, la boîte de dialogue de développement exécute nginx sur le port 8080. L'URL à la racine de l'application de noeud ressemble à ceci:
http: // localhost: 8080 / app
Lorsque j'appelle une redirection vers '/ app' depuis le nœud, la redirection actuelle est la suivante:
Réponses:
Le problème est que l'application Node.js n'émet pas la redirection correctement. Vous pourrez peut-être utiliser
proxy_redirect
pour corriger cela dans nginx:la source
Je venais juste de résoudre le même problème avec Jenkins qui courait derrière Nginx. Ce que cela a fait pour moi a été d'inclure le port du serveur dans l'en-
Host
tête qui est envoyé à Jenkins:J'espère que ça t'as aidé.
la source
J'ai essayé les solutions ci-dessus, mais elles ont toutes échoué chaque fois que l'application de noeud a généré une URL pleinement qualifiée dans l'en-tête d'emplacement, telle que " http://nodeapp.com:8080/new/location ".
J'ai donc fini par utiliser $ http_host pour transmettre l'hôte et le port. Et en utilisant une correspondance ~ ^ pour réécrire entièrement les URL.
Dans notre cas, le serveur de nœud est exécuté sur 8080 et notre proxy nginx sur 8000. Cela signifie que chaque adresse URL complète dans l'en-tête d'un emplacement doit être réécrite. J'espère que cela aide quelqu'un !!
la source
Selon la conversation sur cette question , la solution appropriée consiste à ajuster la
Host
directive d’en-tête du proxy .Change ça:
Pour ça:
$http_host
contient la valeur spécifiée dans l'en-tête HTTP HOST, qui inclut le port. Les redirections doivent récupérer le port personnalisé sans autre personnalisation de la configuration de l'OP.Ces réponses (même ticket) précisent:
la source