gpt4 book ai didi

ssl - 当 ssl 和 http2 打开时,Nginx 似乎忽略了 server_name

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:00 25 4
gpt4 key购买 nike

我有这个 nginx 配置:

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.example.com;
return 301 https://www.example.com$request_uri;
}

server {
listen 443 ssl http2;
server_name www.example.com;
include snippets/ssl-params.conf;
client_max_body_size 5G;
location / {
proxy_pass http://127.0.0.1:8888;
}
}

因此 http://www.example.com 被重定向到 https://www.example.com。问题是,https://example.com 也可以工作并提供代理传递给端口 8888。我怎样才能阻止它工作?我只需要带有 www 的版本即可工作。参数 server_name 似乎没有任何作用。我使用的是“nginx 版本:nginx/1.10.1”。

最佳答案

除非您为端口 443 显式定义默认服务器,否则 nginx 将使用第一个匹配的 server block 来处理请求。参见 this document了解详情。

解决方案是显式定义具有所需行为的默认服务器,例如:

server {
listen 443 ssl http2 default_server;
return 301 https://www.example.com$request_uri;
include snippets/ssl-params.conf;
}

事实上,如果删除 server_name 指令,您可能会将其滚动到端口 80 server block 中:

server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
return 301 https://www.example.com$request_uri;
include snippets/ssl-params.conf;
}

server {
listen 443 ssl http2;
server_name www.example.com;
include snippets/ssl-params.conf;
client_max_body_size 5G;
location / {
proxy_pass http://127.0.0.1:8888;
}
}

关于ssl - 当 ssl 和 http2 打开时,Nginx 似乎忽略了 server_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40107732/

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