NginX - 从非SSL域到新的SSL域 - 需要正确的重定向

时间:2017-09-07 04:55:13

标签: ssl redirect nginx https

以下是这种情况:

  1. 旧域名(无SSL)让我们称之为" no-ssldomain.com"
  2. 新域名(使用-SSL)让我们称之为" ssldomain.com"
  3. 两个域都指向同一个SERVER。因此,使用这两个域都可以。

    No-ssldomain.com已经运行了7年,但由于我现在可以使用我所追求的域名,我使用SSL注册并试图继续使用它。

    它在Wordpress上运行,并且所有永久链接都可以正常工作,所有重定向都可以正常工作。旧的no-ssldomain.com嵌套链接完全重定向到新的ssldomain.com。所以没有谷歌处罚。好的。

    我当前的配置是什么(使用分号,因为我不能发布超过2个链接):

    1. 如果您输入: http; // no-ssldomain.com > 重定向到>的 HTTPS; // ssldomain.com
    2. 如果您输入: https; // no-ssldomain.com > 重定向到> https; // ssldomain.com
    3. 如果您输入: http; // no-ssldomain.com/xx/xx/xx > 重定向到>的 HTTPS; // ssldomain.com/xx/xx/xx
    4. 但发现了一个恼人的问题。

      如果您输入: https; // no-ssldomain.com/xx / ,则会使用 no-ssldomain.com 打开网页并发出不安全警告。它不会重定向到新的 ssldomain.com 。那么我该如何正确地重定向呢?

      这是我的服务器配置:

      server {
              listen 80;
              server_name no-ssldomain.com;
              location / {
                      rewrite "/([0-9]{4})/([0-9]{2})/(.*)" http://$host/$3 permanent;
              }
              if ($host = "no-ssldomain.com") {
                      return 301 https://ssldomain.com$request_uri;
              }
      }
      
      server {
              listen 80;
              listen 443;
              ssl on;
              ssl_certificate /xxx/xxx/ssldomain_com.chained.crt;
              ssl_certificate_key /xxx/xxx/server.key;
      
              root /var/www/html;
      
              # Add index.php to the list if you are using PHP
              index index.php;
      
              server_name ssldomain.com;
              location /wp-admin {
                      index index.php;
              }
              location / {
                      index index.php;
                      rewrite "/([0-9]{4})/([0-9]{2})/(.*)" https://ssldomain.com/$3 permanent;
                      try_files $uri $uri/ /index.php?$args;
              }
              location ~ \.php$ {
                      include snippets/fastcgi-php.conf;
                      fastcgi_pass unix:/var/run/php5-fpm.sock;
              }
      }
      

1 个答案:

答案 0 :(得分:0)

经过一个小时的尝试,我找到了答案。

我所做的是为no-ssldomain.com安装Let的加密免费证书,现在我可以收听该域名的端口443。

然后更改第一个"服务器"我的配置部分:

server {
        listen 80;
        listen 443;
        #ssl on;
        ssl_certificate /etc/letsencrypt/live/xxxx.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/keys/0000_key-certbot.pem;

        server_name no-ssldomain.com www.no-ssldomain.com;

        return 301 https://ssldomain.com$request_uri;
}

然后一切都按预期工作!谢谢!