使用Nginx映射Rails应用程序

麦克森·汉纳隆(Maxence Henneron)

我想使用nginx来在端口80上映射我所有的Rails应用程序。

当前,我有3个Rails应用程序在端口3000 3001和3002上运行,我想在端口80上使用nginx进行映射,如下所示:

http://127.0.0.1/app1 => 127.0.0.1:3000
http://127.0.0.1/app2 => 127.0.0.1:3001
http://127.0.0.1/app3 => 127.0.0.1:3002

这是我所做的:

server {
    listen 80;
    location /app1/ {
        proxy_pass http://127.0.0.1:3000/;
    }

    location /app2/ {
        proxy_pass http://127.0.0.1:3001/;
    }

    location /app3/ {
        proxy_pass http://127.0.0.1:3002/;
    }
}

但是,当我尝试访问http://127.0.0.1/app1时,我只得到HTML内容,没有资源/ js / css,因为浏览器试图从http://127.0.0.1/assets而不是http来获取它们。://127.0.0.1/app1/assets

有没有办法解决这个问题?

欧佐尔

添加ActionController::Base.relative_url_root = "/app1"到您config/environment.rb的app1的末尾(与其他两个应用类似)。这将使Rails为URL添加适当的前缀。

如果您不想弄乱Rails的配置,则可以强迫Nginx遍历所有资产文件夹,直到找到所需的文件夹为止,如果我没记错的话,可以这样归档:

location /assets/ {
  try_files /app1/$uri /app2/$uri /app3/$uri;
}

请注意,您必须为不同应用程序的资产使用不同的文件名。如果您在各处都使用资产管道,因为已经对文件名进行散列处理,那么情况已经如此。

UPD

您也可以尝试基于“推荐人”的路由:

location /assets/ {
   if ($http_referer ~* /app1) {
     rewrite ^(.*)$ app1/$1 break;
   }
   if ($http_referer ~* /app2) {
     rewrite ^(.*)$ app2/$1 break;
   }
   if ($http_referer ~* /app3) {
     rewrite ^(.*)$ app3/$1 break;
   }    
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用Spring Boot应用程序映射HTML文件

使用Nginx和Unicorn的多个Rails应用程序的一个域名

使用NginX服务角度应用程序

使用Nginx和Puma在Ruby on Rails应用程序上启用SSL

基于Docker的Rails应用程序的nginx维护页面

使用源映射调试openlayers 5应用程序

使用Rails应用程序和Vue.js应用程序设置Nginx + Passenger

为什么在添加ssl Nginx之后使用chrome在我的rails 5应用程序中出现HTTP问题?

Rails:如何使用Rails应用程序转换引导模板?

如何使用FIrebase托管应用程序映射Godaddy域

Amazon EC2的端口80上的Rails应用程序-使用Nginx或IpTables

Nginx支持的Rails应用程序缺少内容长度标题

使用多个UI映射测试大型应用程序

使用Nginx + Unicorn在子文件夹上托管多个Rails应用程序

部署Rails API ONLY应用程序时是否需要使用Nginx?

在Nginx中使用多个应用程序获取DNS映射

使用外部API(Salesforce)将变量设置为Rails应用程序中的字段映射组

使用Nginx运行守护程序的Bottle应用程序

如何使用Puma和Nginx配置在子URL上托管的Rails 3应用程序?

为多个Rails应用程序配置NGINX

如何在使用Rails 4.2.1 + Nginx + Passenger构建的应用程序中调试内存泄漏并进行线程分析?

Rails Nginx:多个应用程序

重新映射Rails应用程序的根目录

使用Capistrano,nginx,puma将Rails应用程序部署到DigitalOcean

Nginx - 多个应用程序

无法访问 Nginx 的 Ruby on Rails 应用程序

使用 rails 应用程序安装 ssl 证书的 nginx 配置

无法使用 nginx 在 ReactJS 应用程序中使用 CORS

使用 gitlab 托管应用程序安装的 nginx 入口控制器的自定义配置映射