首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx -无法为第二个站点使用(不同)证书

nginx -无法为第二个站点使用(不同)证书
EN

Stack Overflow用户
提问于 2018-02-02 01:45:15
回答 2查看 1.5K关注 0票数 0

我最初使用certbot作为我的第一个站点(默认)的证书。一切都很好,在过去的6个月里它运行得很好。最近我试图添加另一个站点到我的服务器,当我试图认证它时出现了问题。(它在http上运行良好-使用端口80)。

我遵循了之前使用certbot生成ssl-cert的完全相同的步骤(尽管更改了名称),并且没有任何问题。

但是,现在当我将site2证书添加到时,它会重定向到默认值,并在url栏中显示为不安全。如果我尝试go to default,它工作得很好,并且仍然是经过认证的。

我确定这是site2证书的问题,但我不确定问题出在哪里?

我原来的网站"default“是一个php脚本。然而,第二个站点"site2“是一个html脚本。

默认的代码;

代码语言:javascript
复制
server {
    listen 80 default_server ;

    listen [::]:80 default_server  ipv6only=on;
    server_name default.com www.default.com;
            return 301 https://www.default.com$request_uri;


    }

server{
 listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2 default_server;
 include /etc/nginx/snippets/ssl-default.com.conf;
 include /etc/nginx/snippets/ssl-params.conf;



       location ~ /.well-known {
            allow all;
    }


     root /var/www/default.com/site;
 index index.php index.html index.htm index.nginx-debian.html;
   server_name _;

    location / {
try_files $uri $uri/ /index.php?$args;

      }



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


 location ~ /\.ht {
            deny all;
    }

}

站点2的代码;

代码语言:javascript
复制
server {
    listen 80;
    listen [::]:80 ;
    server_name site2.com www.site2.com;
    return 302 https://www.site2.com$request_uri;
}
server{
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name _;
    include /etc/nginx/snippets/ssl-site2.com.conf;
    include /etc/nginx/snippets/ssl-params.conf;

     location ~ /.well-known {
            allow all;
    }


    root /var/www/site2.com/;
    index index.html;

    location / {
            try_files $uri $uri/ =404;
    }

    location ~ /\.ht {
            deny all;
    }



}

sudo nginx -t输出;

代码语言:javascript
复制
  [warn] "ssl_stapling" ignored, issuer certificate not found
  nginx: [warn] conflicting server name "_" on 0.0.0.0:443, ignored
  nginx: [warn] conflicting server name "_" on [::]:443, ignored
nginx: [warn] conflicting server name "default.com" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "www.default.com" on 0.0.0.0:80, 
ignored
nginx: [warn] conflicting server name "default.com" on [::]:80, ignored
nginx: [warn] conflicting server name "www.default.com" on [::]:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

params.conf包含;

代码语言:javascript
复制
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# disable HSTS header for now
#add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; 
preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl.site2.com.conf有私钥和全链的位置。(格式和位置与默认相同,只是更改了名称。)

*检查url栏中的"not-secure“,指出site2的证书已默认颁发

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 17:38:17

除非只有一个虚拟主机,否则不应该在ssl主机上使用server_name _;您应该在每个服务器部分中设置显式名称。

票数 0
EN

Stack Overflow用户

发布于 2021-11-13 07:43:59

最有可能的情况是,您有2个或更多的配置文件,在这些文件中,您在server_name中为同一端口设置了一个值。正如我所看到的,其中一个文件是default。尝试检查现有站点的/etc/nginx/sites-enabled

尝试从两个::443配置中删除行server_name _;,它应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48568790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档