gpt4 book ai didi

ssl - 如何修复 nginx 多域 SSL 错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:07 24 4
gpt4 key购买 nike

我有 2 个域,我的 nginx 配置如下。当我输入 example.com 时,网站使用 ssl 打开没有任何问题,但如果我输入 example.nl,浏览器会发出“您的连接不是私有(private)连接”警告。

我通过更改配置测试了两个域的证书,并且都可以正常工作。

问题是什么?我该如何解决?

upstream website {
server web:8000;
}

server {
listen 80;
server_tokens off;
server_name *.example.com *.example.nl;


location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl;
server_name *.example.com;
server_tokens off;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;


# serve static files
location /static/ {
alias /static/;
}

# serve media files
location /media/ {
alias /media/;
}


location / {
proxy_pass http://ourwebsite;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


server {
listen 443 ssl;
server_name *.example.nl;
server_tokens off;

ssl_certificate /etc/letsencrypt/live/example.nl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.nl/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;


# serve static files
location /static/ {
alias /static/;
}

# serve media files
location /media/ {
alias /media/;
}


location / {
proxy_pass http://website;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

最佳答案

TLDR:您的名字不匹配

您有用于 SSL 的 server{} block ,server_name 值为 *.example.com*.example.nl 但您正在为 example.comexample.nl 发出请求。这些与任何一个服务器 block 都不匹配。像 *.example.com 这样的 DNS 通配符匹配该标签中的任何值(abc.example.comwazoo.example。 comoompapaoompapaoompapa.example.com) 但它不匹配带有 no 这样的标签的名称,例如 example.com。您可能会将它与 shell“glob”或正则表达式(例如 sed、awk、perl 等)混淆,其中 * 是具有零个或多个语义的“Kleene 星”。

由于您的请求与任何一个服务器 block 都不匹配,nginx 使用默认服务器 block ;由于您没有明确指定默认 block ,nginx 将其设为第一个。第一个 SSL 服务器 block 使用 example.com 的证书,因此对 example.com 的请求与该证书匹配并有效,而对 example.nl< 的请求 不匹配并失败。如果您 *.example.nl block 配置,它现在是第一个,因此是默认值,因此请求 example.nl工作,但对 example.com 的请求失败。

将您的 server_name 更改为或包含与您使用的实际名称相匹配的名称。

关于ssl - 如何修复 nginx 多域 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57045969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com