4

我是rails生产环境的菜鸟。我可以配置 nginx 和 unicorn 以响应其他(不是 80)端口吗?我不需要任何域,我只需要 ip 和端口。这是我的应用程序的 nginx 配置(80 端口):

server {
    listen 80;
    server_name  localhost;
    root /home/my_app_folder/web-app/public;
    client_max_body_size 32m;
    location / {
        try_files  $uri @unicorn;
    }
    location @unicorn {
        proxy_set_header  Client-Ip $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $host;
        proxy_pass  http://unix:/home/my_app_folder/web-app/tmp/sockets/unicorn.sock;
    }
}

我的应用程序在 80 端口上运行良好。例如,如果我将 80 更改为 3000,如下所示:

server {
    listen 3000;
    server_name  localhost;
    root /home/my_app_folder/web-app/public;
    client_max_body_size 32m;
    location / {
        try_files  $uri @unicorn;
    }
    location @unicorn {
        proxy_set_header  Client-Ip $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $host;
        proxy_pass  http://unix:/home/my_app_folder/web-app/tmp/sockets/unicorn.sock;
    }
}

我有问题。一切正常,我可以访问http://my_ip:3000但 Rails 的 url 助手(例如 root_url 等)没有端口(http://my_ip)。

我该怎么做才能看到带有端口的 url 助手?有没有办法在 Nginx 或 Unicorn 的配置文件中做到这一点?毕竟,当我在本地运行 Webrick 时,它具有 URL http://localhost:3000的形式,并且每个 *_url 助手都返回带有端口 3000 的 url。我需要更改一些配置文件,并将应用程序转移到另一个港口。

谢谢。

4

1 回答 1

7

尝试在您的应用程序控制器中放置类似的内容:

default_url_options[:port] = 3000 if Rails.env.production?

或者,取决于您使用的 Rails 版本:

Rails.application.routes.default_url_options[:port]= 3000 if Rails.env.production?

信用 - 迪伦的回答:

default_url_options 和 rails 3

于 2012-05-09T17:40:01.870 回答