Voici ma situation: je vais avoir un serveur frontal exécutant nginx, et plusieurs serveurs backend exécutant apache + passenger avec différentes applications de rails. Je n’essaie PAS de faire un équilibrage de charge. Ce que je dois faire est de configurer nginx pour les connexions proxy à des serveurs spécifiques basés sur l’URL. IE, client.domain.com doit pointer sur xxx100: 80, client2.domain.com doit pointer sur xxx101: 80, etc.
Je ne suis pas familier avec nginx, mais je n’ai pas trouvé de configuration spécifique en ligne adaptée à ma situation.
Merci.
vous pouvez faire correspondre les différents URL avec des blocs de serveur, puis à l’intérieur de chaque bloc de serveur, vous avez les parameters de proxy inverse
server { server_name client.domain.com; # app1 reverse proxy follow proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx100:80; } server { server_name client2.domain.com; # app2 reverse proxy settings follow proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx100:80; }
évidemment append d’autres parameters nginx (comme error_page
, access_log
, …) comme souhaité dans chaque server
-block
Le commentaire de @ mohamnag a raison. proxy_pass
n’est autorisé qu’à l’intérieur d’un location
Voir:
http://wiki.nginx.org/HttpProxyModule#proxy_pass
https://www.nginx.com/resources/admin-guide/reverse-proxy/
Donc, la configuration correcte serait
server { server_name client.domain.com; location / { # app1 reverse proxy follow proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx100:80; } } server { server_name client2.domain.com; location / { # app2 reverse proxy settings follow proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx100:80; } }