我有几个放置nginx的网站 的/ etc / nginx的/位点可用的
最近,我已经为其中一个网站添加了https和letsencrypt(让我们说test1.com)。
所有其他网站都没有配置https。
现在如果我在为任何其他网站发出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请求有某种拒绝。
答案 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;
}
}