ruby-on-rails – nginx:从命名位置的proxy_pass中删除路径

我有这个nginx配置来提供rails应用程序:location ^~ /api/ {alias /srv/www/rails/public/;try_files $uri @unicorn;}location @unicorn {proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_...

我有这个nginx配置来提供rails应用程序:

  location ^~ /api/ {
    alias /srv/www/rails/public/;
    try_files $uri @unicorn;
  }

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:2007;
  }

我想从路径的开头删除/ api /,然后将其传递给rails app,但由于它是一个命名位置,我不能在proxy_pass指令的末尾添加“/”,如何在传递请求之前删除/ api /到铁轨?

解决方法:

使用:

location @unicorn {
    rewrite ^/api(.*)$$1 break;
    ...
}

有关详情,请参见this document.

本文标题为:ruby-on-rails – nginx:从命名位置的proxy_pass中删除路径