Nginx使用https不断解决错误的网站

时间:2017-11-23 06:20:30

标签: http nginx https lets-encrypt

我有几个放置nginx的网站 的/ etc / nginx的/位点可用的

最近,我已经为其中一个网站添加了https和letsencrypt(让我们说test1.com)。

所有其他网站都没有配置https。

现在如果我在为任何其他网站发出https请求时(让我们说test2.com)。

https://test2.com

我得到了chrome" waring你的连接不是私密的"

nginx尝试打开https://test1.com网站。

Http请求正常。

这是我的默认配置

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    listen 433 default_server;
    listen [::]:433 default_server;

    index index.php index.html index.htm index.nginx-debian.html;


    location / {
        #try_files $uri $uri/ =404;i
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

这是我的test1网站conf

server {
        listen 80;
        listen [::]:80;
        server_name test1.com;

        location / {
                return 301 https://www.test1.com$request_uri;
        }
}

server {
        listen 80;
        listen [::]:80;
        server_name www.test1.com;

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

        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2;
        ssl_ciphers EECDH+AESGCM:EECDH+AES;
        ssl_ecdh_curve secp384r1;
        ssl_prefer_server_ciphers on;

       ssl_stapling on;
       ssl_stapling_verify on;

       add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
       add_header X-Frame-Options DENY;
       add_header X-Content-Type-Options nosniff;

       ssl_certificate /etc/letsencrypt/live/test1.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/test1.com/privkey.pem;


       root /var/www/test1;

       index index.php index.html index.htm;


       location / {
               try_files $uri $uri/ /index.php$is_args$args;
      }


       location ~ \.php$ {
               include snippets/fastcgi-php.conf;

               fastcgi_pass unix:/run/php/php7.0-fpm.sock;

       }
       location ~ /\.ht {
                deny all;
       }

 }

这是我的test2.com conf文件

# I've tried this - didn't help
#server {
#    listen      433 ssl;
#    server_name www.test2.com;
#    return      444;
#}
server {
       listen   80;
       root /var/www/test2;
       index index.php index.html index.htm;
       server_name www.test2.com;
       server_name test2.com;

       location / {
                    #try_files $uri $uri/ =404;i
                    try_files $uri $uri/ /index.php$is_args$args;
       }

       location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
       }

       location ~ /\.ht {
                                    deny all;
       }

}

我没有尝试在test2.com上使用test1.com的证书,我试图阻止test2.com在https上工作。 如果我为test2.com创建一个ssl它会起作用,但我不想要它。 我希望test2.com在没有http的情况下工作,并且对https请求有某种拒绝。

2 个答案:

答案 0 :(得分:0)

HTTPS的工作方式是验证xyz.com的证书,以便浏览器知道该网站及其证书是否匹配。

您需要获得test2.com的另一个证书

如果您在test2.com上使用test1.com证书,浏览器会通知您证书不匹配(即该网站不是test1.com)

<强>更新

尝试将下面的块放在conf中以防止未定义的服务器名称。如果是自动路由问题,这将是固定的

server {
    listen      80;
    server_name "";
    return      444;
}

更新2

从default.conf中删除以下行

listen 433 default_server;
listen [::]:433 default_server;

答案 1 :(得分:0)

如果您想阻止test2.com使用SSL证书,那么您必须将所有:: 443请求重定向到test2.com conf中的:: 80而不是“return 444”;

server {
        listen 443;
        listen [::]:443;
        server_name test2.com;

        location / {
                return 301 http://www.test2.com$request_uri;
        }
}
server {
        listen 443;
        listen [::]:443;
        server_name www.test2.com;

        location / {
                return 301 http://www.test1.com$request_uri;
        }
}
server {
       listen   80;
       root /var/www/test2;
       index index.php index.html index.htm;
       server_name www.test2.com;
       server_name test2.com;

       location / {
                    #try_files $uri $uri/ =404;i
                    try_files $uri $uri/ /index.php$is_args$args;
       }

       location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
       }

       location ~ /\.ht {
                                    deny all;
       }

}