redirect - SSL _and_ www 重定向与 nginx

标签 redirect ssl express nginx

我为我的服务器获得了证书 - example.com 并选择不为 www.example.com 签名,因为我要重定向所有流量www.example.comexample.com

现在,我有一个 nginx 重定向用于:

http://example.comhttps://example.com

http://www.example.comhttps://example.com

但我无法让这个工作:

https://www.example.comhttps://example.com

发生的事情是 nginx 在地址栏中使用 www 正常加载站点,然后 chrome 抛出 SSL 警告,因为正在交付的证书未针对 www.example.com,只是 example.com

这是我的配置。我该怎么做?我是否需要购买另一个证书并为 www.example.com 签名?

upstream app_nodejs2 {
  server 127.0.0.1:3333;
}

server {
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 80;
    listen   [::]:80;
    listen   443 ssl;
    #ssl on;
    ssl_certificate    /root/sslcert/example.crt;
    ssl_certificate_key    /root/sslcert/example.key;

    server_name example.com;

    if ($ssl_protocol = "") {
       rewrite ^   https://$server_name$request_uri? permanent;
    }

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://app_nodejs2;
      proxy_redirect off;
    }

}

最佳答案

您必须在 www 地址上放置一个证书。

通过使用 https,您的浏览器在信任执行服务器所说的操作之前要求安全连接。您的连接安全,因此浏览器不会发送 cookie、遵循重定向等。

这是一件好事。

但这对您的证书预算来说很糟糕。

如果您的 CA 允许您将 www 添加为主题备用名称,您可以使用一个证书处理两个域,这很方便并且得到了相当广泛的支持。

关于redirect - SSL _and_ www 重定向与 nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443097/

相关文章:

wordpress - 从带有 WP 4.1 的 IP 地址到 wordpress 服务器的安全连接?

java - 阻止 Google App Engine 从 appspot.com 提供服务

javascript - 如何重定向来自特定国家/地区的用户?

git - SSL 连接超时

apache - SVN (TortoiseSVN/SlikSVN) - 服务器证书已更改 : connection intercepted?

javascript - 以express方式发送post请求时超出了最大调用堆栈大小

javascript - 客户端模板和部分 View 和表达

javascript - Node JS Json Web token Router.use() 需要中间件函数,但未定义

c# - 根据 ASP.NET MVC 4 Internet 应用程序登录中的用户角色重定向到不同的页面

java - 允许从站点 A 访问站点 B