2012-05-09 5 views
3

私はレール生産環境のnoobです。 nginxとunicornを他の(80ではなく)ポートの応答に設定できますか?私はドメインを必要としない、私は唯一のIPとポートが必要です。Railsの* _urlヘルパーは、プロダクションのカスタムポート(80ではなく)を使用しています。 (Nginx、Unicorn)

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ポート)にnginxの設定です。私はここのように、例えば3000に80を変更した場合 :

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を返します。私はいくつかの設定ファイルを変更し、アプリケーションを別のポートに転送する必要があります。

ありがとうございました。

+0

hey @ kasper375、これを解決しましたか? – caarlos0

答えて

5

アプリケーションコントローラにこのようなものを入れてみてください:あなたが使用しているのRailsのバージョンに応じて、

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

か:

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

クレジット - でディランの答え:

default_url_options and rails 3

関連する問題