4

私はRails本番環境の初心者です。他の (80 以外の) ポートで応答するように nginx と unicorn を構成できますか? ドメインは必要ありません。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 とレール 3

于 2012-05-09T17:40:01.870 に答える