Ce que je veux faire, c'est
Quand quelqu'un visite http://localhost/route/abc
la réponse du serveur est exactement la même que http://localhost:9000/abc
Maintenant, je configure mon Nginx comme ceci:
location /route {
proxy_pass http://127.0.0.1:9000;
}
La requête http est envoyée au port 9000
correctement, mais le chemin qu'il a reçu est http://localhost:9000/route/abc
ne pas http://localhost:9000/abc
.
Toute suggestion ?
Je déteste la subtilité ici, mais essayez d'ajouter un/à la fin de 9000 comme ci-dessous. Il n'ajoutera plus "route" à la demande transférée maintenant.
location /route {
proxy_pass http://127.0.0.1:9000/;
}
Je pense que vous pouvez utiliser la réécriture pour supprimer la partie supplémentaire de l'URL. Dans votre cas, je pense que vous pourriez utiliser:
location /route/ {
rewrite ^/route/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Cependant, si votre application contient des liens internes, ils peuvent toujours pointer vers/abc/foo, et si vous le faites, ils doivent plutôt pointer vers/route/abc/foo pour que la demande brute arrive correctement. Il est préférable de laisser la configuration nginx telle quelle et de configurer votre application pour être conscient qu'elle réside dans un sous-répertoire, si vous le pouvez.
Je sais que c'est une vieille question, mais c'était le meilleur coup google pour moi quand j'essayais de résoudre le même problème!
Essayez ce qui suit
location /route/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
vim nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
location / {
proxy_pass http://compute-1-36:8787;
proxy_redirect http://compute-1-36:8787/ $scheme://$Host:8080/;
}
}
Ce code écoute sur 8080 et redirige vers le port 8787 sur compute-1-36. Vous pouvez sélectionner un autre chemin dans l'emplacement /