Rails i18n如果我使用unicorn和nginx作为应用程序服务器不起作用

时间:2013-03-10 07:28:48

标签: ruby-on-rails internationalization nginx unicorn


当我使用默认的 WEBrick 服务器运行我的应用程序,并从子域设置语言环境时,i18n完美地用于“en”和“ja”。
但是,当我使用 Nginx和Unicorn 运行我的应用程序时,i18n的工作方式与WEBrick中的不同。

我在下面编写代码来设置子域的语言环境;

 def set_locale                                          
    I18n.locale = params[:locale] || I18n.default_locale  
     if request.host.starts_with? "en."                    
      I18n.locale = "en"                                  
     else                                                  
      I18n.locale = "ja"                                  
     end                                                   
 end


我在这里想念的是什么? 除了我在nginx.conf中将应用程序名称或proxy_pass更改为app之外,我对unicorn和nginx的设置几乎都是默认设置。 谁能教我如何让i18n工作?我整天都在堆栈.... 请原谅我糟糕的英语技巧......
提前谢谢你。

1 个答案:

答案 0 :(得分:1)

尝试在location @app-name { }proxy_pass配置上方的Nginx配置中添加以下行:

proxy_set_header Host $http_host;

如果您的Nginx配置中缺少Rails,则会将proxy_pass设置作为主机发送。