J'ai besoin de créer une carte assez simple dans Nginx redirigeant un sous-path sur un autre serveur situé dans le même sous-réseau.
J'ai essayé de mettre ceci dans la section serveur
location /tomcatapi/ {
rewrite /tomcatapi/(.*) $1 break;
proxy_pass http://192.168.0.3:8443;
}
mais tout ce que j'ai accès à http://www.myservice.com/tomcatapi/ est une page d'erreur 500 et dans le fichier journal nginx, j'ai cette erreur:
the rewritten URI has a zero length
Qu'est-ce que je manque dans cette CONF?
Regardons votre ligne de réécriture:
rewrite /tomcatapi/(.*) $1 break;
Vous prenez le bit entre parenthèses (c'est-à-dire tout après /tomcatapi/
), qui est assigné à $1
, et en utilisant cela comme le seul contenu de votre URI réécrit.
Dans votre exemple, il n'y a rien après /tomcatapi/
, la réécriture finit donc de vider, et c'est ce que Nginx gémit.
Si vous changez la règle de réécriture en
rewrite /tomcatapi/(.*) /$1 break;
ensuite, vous finirez toujours avec au moins /
Dans la sortie de réécriture.