1 votes

Le proxy_pass de base de nginx échoue avec HTTP 500

J'ai une configuration extrêmement minimale qui, selon moi, devrait inverser le proxy que je vois sur example.com:1234 à example.com[:80] .

error_log /var/log/nginx/error.log info;

events{
}

http{
    server{
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://example.com:1234;
            proxy_redirect default;
        }
    }
}

Cependant, la navigation vers le port 80 entraîne une erreur de serveur interne. 500 - en naviguant vers le port 1234 rend la sortie attendue.

Le journal ne contient que des entrées "processus de signal démarré".

Qu'est-ce que j'ai fait de mal, ou raté ? Comment puis-je consigner une meilleure (n'importe quelle !) description de l'erreur de serveur ; je pense que ce n'est pas la dernière fois que cela serait utile.

3voto

Hugo Peixoto Points 1291

Si votre backend est sur le même hôte, essayez d'utiliser proxy_pass http://127.0.0.1:1234; au lieu de proxy_pass http://example.com:1234; . NGINX invoque une logique de résolution de nom interne avant d'utiliser le DNS, puisque votre server_name est identique au nom d'hôte dans proxy_pass cela peut être la source de votre problème.

0voto

Daniel Gordi Points 264

Il suffit de supprimer le proxy_redirect et d'envoyer une autre requête au NGINX. Si l'erreur Internal Server persiste, examinez le fichier journal.
De plus, cela ne fera pas de mal si vous vérifiez le backend (proxy_pass http://example.com ) avec curl depuis votre serveur pour être sûr que votre backend est sain.

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