我有一个Rails应用程序(http://example.org),其中多个租户可以有一个简单的CMS。他们得到一个前端,其位于http://example.org/frontend/clients/:client_name
,相关的子路径如/posts
和/media
。在Nginx反向代理后面更改应用程序的Rails链接路径
现在我想允许租户使用自定义域,因此应用程序将例如对http://example.com/posts
的请求做出回应,内容为http://example.org/clients/example.com/posts
。
我设法写一个Nginx的proxy_pass
规则来获得工作[见下文]。现在的问题是,在http://example.com/posts
(例如frontend_client_media_path
)上服务的相对Rails链接助手仍然指向Rails中定义的路径,例如, http://example.com/clients/example.com/media
。
只要站点被自定义域访问,是否有可能通过忽略/clients/example.com
部分来告诉Rails以不同方式构建路径?
附录
Nginx的规则(它的肉)
server {
server_name _; # allow all domains
location/{
proxy_pass http://upstream/frontend/clients/$host$request_uri; # proxy to client-specific subfolder
}
}