nginx 配置,多个 server 模块相关

196 天前
 wu00

nginx 配置

我的 nginx(1.20-alpine) 配置,以及文件位置:
/etc/nginx/conf.d/default.conf

access_log on;
server_tokens off;

server {
  listen 80;
  server_name _;
  return 404;
}

/etc/nginx/conf.d/mysite.conf

server {
  listen 80;
  server_name a.domain.com;
  ...
}

server {
  listen 443 ssl;
  server_name a.domain.com;
  ssl_certificate: xxx;
  ssl_certificate_key: xxx;
  ...
}

server {
  listen 80;
  server_name b.domain.com;
  ...
}

server {
  listen 80;
  server_name c.domain.com;
  ...
}

只有 a.domain.com 配置了 SSL 证书,b 和 c 并没有证书,也不提供 https 服务。
这个配置下访问 http://a.domain.comhttps://a.domain.comhttp://b.domain.comhttp://c.domain.com 都很正常;

问题

访问 https://b.domain.comhttps://c.domain.com 时就不正常了(虽然浏览器提示风险但还是能点继续访问),会匹配到 a.domain.com 的 server ,也就是把 a.domain.com 的内容给代理出去。

我的尝试

添加一个配置处理 b 、a 的 https 请求,虽然有效但是感觉怪怪的;而且我不光只有 b 、c 还有很多 d 、e 、f...

#有效
server {
  listen 443 ssl;
  server_name b.domain.com c.domain.com;
  return 404;
}

#无效
server {
  listen 443 ssl;
  server_name _;
  return 404;
}
889 次点击
所在节点    NGINX
5 条回复
OceanBreeze
196 天前
你 http 都知道配置 default server ,https 也一样

server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
return 404;
}
wu00
196 天前
@OceanBreeze 我尝试过
server {
listen 443 ssl;
server_name _;
return 404;
}
无论加不加 ssl_certificate 都是无效的
OceanBreeze
196 天前
OceanBreeze
196 天前
server {
server_name _;
listen 80 default_server;
listen 443 ssl default_server;

## To also support IPv6, uncomment this block
# listen [::]:80 default_server;
# listen [::]:443 ssl default_server;

ssl_certificate <path to cert>;
ssl_certificate_key <path to key>;
return 404; # or whatever
}
wu00
196 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985928

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX