我们目前正在使用 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.com
在api.somedomain.com\someapp