web-dev-qa-db-fra.com

Utiliser nginx comme proxy inverse pour IIS serveur

J'ai plusieurs applications ASP.NET s'exécutant sur un seul serveur IIS avec des ports différents pour chaque application.

J'ai installé nginx sur le même serveur afin que mes clients puissent accéder à toutes mes applications uniquement via le port 80.

Nginx fonctionne correctement sur le port 80. Mes applications ASP.NET individuelles sont également opérationnelles.

J'ai apporté ces modifications dans le fichier de configuration nginx

    location /students/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $Host;
        proxy_pass http://127.0.0.1:84;
    }
    location /registration/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $Host;
        proxy_pass http://127.0.0.1:82;
    }

Ensuite, j'ai redémarré nginx et tapé l'url http://127.0.0.1/students/ dans mon navigateur. Nginx a servi 404 pages.

Je n'ai apporté aucune autre modification au fichier de configuration.

Qu'est ce que je fais mal?

13
Shuaib

Je pense que le problème que vous rencontrez est lié au début du chemin d’URL. L'URL http://120.0.0.1:84/students/ renvoie-t-elle la page ou un 404? Si vous vous attendez à aller à http://127.0.0.1:80/students/ et à afficher la page à http://127.0.0.1/, vous constaterez que nginx ne transforme pas le chemin pour vous avec cette configuration. Au lieu de cela, il recherche exactement le même chemin sur le serveur mandaté.

Vous devez mettre le / à la fin de l'URL dans la directive proxy_pass

location /students/ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $Host;
    proxy_pass http://127.0.0.1:84/;
}

Ceci est un piège subtil mais important dans les configurations nginx! Si vous n'incluez pas la barre oblique inverse, http://127.0.0.1:84 sera traité comme un emplacement de serveur. Si vous avez la barre oblique inverse, elle sera considérée comme une URL et remplacera tout dans l'URL du proxy jusqu'à la partie "emplacement".

13
jwg

Si vous souhaitez transformer IIS 127.0.0.1:84/students en nginx 127.0.0.1/students. essayez ci-dessous le code ..

location /students {
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header Host $Host;
   proxy_pass http://127.0.0.1:84/students;
 }
location /registration {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $Host;
    proxy_pass http://127.0.0.1:82/registration;
}
0
krizna