nginx proxy_pass 根据位置/传递重写的 url 到不同的后端

nginx proxy_pass 根据位置/传递重写的 url 到不同的后端

如果您想根据位置通过 proxypass 将 URL 请求代理到两个不同的后端,那么最快、最干净的解决方案是什么。

 location /app1/ {
         alias /var/www/ruby/public;
         proxy_set_header  X-Real-IP  $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header  Host $http_host;
         proxy_redirect    off;
         try_files $uri $uri/ @ruby;
       }

      location @ruby {
         proxy_pass http://127.0.0.1:3000;
      }

 location /app2/ {
         proxy_set_header  X-Real-IP  $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header  Host $http_host;
         proxy_redirect    off;
         try_files $uri $uri/ @other;
       }

      location @other {
         proxy_pass http://127.0.0.1:8080;
      }

使用此配置,nginx 将"/app1"/app2”传递给代理,但后端无法识别 url/命令。

例如,http://127.0.0.1:3000在访问时只想传递给 /messages http://<nginx>/app1/messages- 但在上面的配置中也传递/app1/http://127.0.0.1:3000/app1/messages。同样适用于/app2

相关内容