ssl - Rails 和 Nginx www 和非 www 搞混了

标签 ssl nginx

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

我想要的是所有 httphttpsmydomain.com 以及 www.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...
}

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

最佳答案

我想我已经解决了,我认为我的问题部分与 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;
}

我希望这对某人有帮助。

关于ssl - Rails 和 Nginx www 和非 www 搞混了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22921225/

相关文章:

c# - Postman http请求成功,C# HttpWebRequest错误 SSL/TLS安全通道的信任关系

Apache HTTP 客户端 javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated

ssl - 错误 102 nginx SSL

ruby-on-rails - 如何在 Nginx 中启用 TLS 1.2?

windows - 如何使用 docker 在 Windows Server 2019 中使用 nginx 设置反向代理?

caching - kubernetes nginx 入口 Controller /缓存静态 Assets

java - Lollipop 握手失败

ssl - 安装 SSL 证书并运行 nitrogen webframe work over cowboy server over https

ruby-on-rails - Passenger 和 rbenv 问题 - 库版本不兼容

ubuntu - DotNet Core 应用程序不接受 Linux 上的 POST