使用 nginx 更改 URL 发送给乘客

使用 nginx 更改 URL 发送给乘客

我们目前正在使用 Passenger 和 nginx 将多个 Rails 应用部署到一台服务器。
目前,我们的情况是,我们有一个应用有一个公共 URL,但我们正在努力将这些 URL 标准化一点。所以我们想移动它,但短期内我们必须将其保留在两个 URL 上,所以我们无法更新 Rails 以知道忽略下面的 URL 部分。

旧配置:

server {
    listen 80;
    server_name someapp.somedomain.com;

    root /var/www/someapp/public;
    passenger_enabled on;

    error_page 500 502 503 504 /50x.html;
    location /50x.html {
            root html;
    }
}

我们正在尝试添加的新块:

server {
    listen 80;
    server_name api.somedomain.com;

     location /someapp {
        alias /var/www/someapp/public;
        passenger_base_uri /;
        passenger_app_root /var/www/someapp;
        passenger_document_root /var/www/someapp/public;
        passenger_enabled on;

    }
}

最终目标是保留这两者。但是问题是,当我们尝试转到新块中概述的 URL 时,rails 会/someapp/在 URL 中看到,但无法理解要路由到哪里。
我们尝试添加,rewrite ^/someapp(/.*)$ $1 last;但是这导致它离开位置块,而不是转到正确的应用程序。
我需要找到某种方法来暂时更改传递给 rails 的 URL,直到我们可以完全删除旧 URL 并更新 rails。对于这个特定的应用程序,我们不需要担心 Url 的 rails 可能会生成什么。

最终目标:
基本上,计划是这两个块都应该以某种形式存在。 同一个 rails 应用程序someapp.somedomain.comapi.somedomain.com\someapp

相关内容