【问题标题】:Rails and Nginx www and non-www getting mixed upRails 和 Nginx www 和非 www 搞混了
【发布时间】:2014-05-20 05:10:55
【问题描述】:

我浏览了许多相关的帖子,但我不明白我哪里出错了。

我想要的是所有httphttpsmydomain.comwww.mydomain.com 请求转到https://www.mydomain.com(类似于this 人)

我检查了我的 SSL 证书,上面写着它适用于 www.mydomain.com。如果我访问 mydomain.com 或 www.mydomain.com,我已经检查了证书,它似乎提供了相同的信息,而且两者似乎都是安全的(小绿锁)。

我在this帖子上尝试了解决方案,但收到以下错误:

Restarting nginx: nginx: [emerg] invalid parameter "443" in /path/nginx/sites-enabled/example:3

我遇到的问题是用户在 www.mydomain.com 页面上登录,由于某种原因,他们被重定向到 mydomain.com 页面,然后他们似乎已注销并需要再次登录。老实说,我不确定这是 Rails 问题还是 nginx 配置问题。

我的 nginx 配置文件如下:

server {
    listen      80;
    server_name mydomain.com www.mydomain.com;
    return 301 https://www.mydomain.com$request_uri;
}

server {
    listen 443 ssl default;
    server_name www.mydomain.com;
    ...other stuff...
}

非常感谢您的帮助。我很困惑。

【问题讨论】:

    标签: ssl nginx


    【解决方案1】:

    我想我已经解决了,我认为我的问题部分与 rails 相关,部分与 nginx 相关。

    在我的轨道上

    def default_url_options
      if Rails.env.production?
        {:host => "myapp.com"}
    

    我改成了

    def default_url_options
      if Rails.env.production?
        {:host => "www.myapp.com"}
    

    它有帮助,但如果人们首先导航到 myapp.com,则无济于事。

    完全修复它的是在我的 nginx 配置文件中添加另一个重定向服务器:

    server {
      listen      443 ssl;
      server_name myapp.com;
      return 301 https://www.myapp.com$request_uri;
    }
    

    我希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 2018-01-07
      • 2016-04-02
      • 2017-03-10
      • 1970-01-01
      • 2013-03-28
      • 2017-09-03
      • 2011-05-01
      • 2017-12-04
      相关资源
      最近更新 更多