Configuration NGINX:

Je suis nouveau sur NGINX et j’essaie d’équilibrer nos serveurs Web ERP. J’ai 3 serveurs web fonctionnant sur le port 80 alimenté par websphere qui sont une boîte noire pour moi:

* web01.example.com/path/apphtml * web02.example.com/path/apphtml * web03.example.com/path/apphtml 

NGINX écoute l’URL virtuelle ourerp.example.com et l’envoie par proxy au cluster.

Voici ma config:

 upstream myCluster { ip_hash; server web01.example.com:80; server web02.example.com:80; server web03.example.com:80; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name ourerp.example.com; location / { rewrite ^(.*)$ /path/apphtml break; proxy_pass http://myCluster; } } 

Lorsque je n’utilise que proxy_pass, le chargement de NGINX est équilibré, mais la demande est transmise à web01.example.com et non à web01.example.com/path/apphtml

Lorsque j’essaie d’append une réécriture d’url, il suffit de réécrire l’URL virtuelle et je me retrouve avec ourerp.example.com/path/apphtml.

Est-il possible de réécrire l’URL au niveau amont ou d’append le chemin d’access à l’application au niveau amont?

Si vous essayez de mapper / vers /path/apphtml/ via le proxy, utilisez:

 proxy_pass http://myCluster/path/apphtml/; 

Voir ce document pour plus d’informations.

Le problème avec votre instruction de rewrite est un manque $1 à la fin de la chaîne de remplacement. Voir ce document pour plus d’informations, mais comme je l’ai indiqué ci-dessus, vous n’avez pas besoin de l’instruction proxy_pass , car l’instruction proxy_pass est capable de faire le même travail de toute façon.