nginx:从命名位置的proxy_pass中删除路径

时间:2016-02-06 15:57:12

标签: ruby-on-rails nginx

我有这个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 /在将请求传递给rails之前?

1 个答案:

答案 0 :(得分:5)

使用:

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

有关详细信息,请参阅this document