我有两个域指向同一台服务器,一个我们将调用home
,另一个我们将调用web
。
我在端口 80 上为 HTTP 和 443 为 HTTPS 运行 nginx。在我的服务器定义中,我定义了两个服务器:
server {
listen 80;
server_name web;
# ...
}
server {
listen 443;
server_name web;
# ...
}
Run Code Online (Sandbox Code Playgroud)
在实践中,它工作得很好。但是,当我尝试访问home
指向与 相同的 IP 地址的 时web
,我会得到服务,web
而不是得到 404 或类似信息。
如何将 nginx 配置为与服务器名称不匹配的 404 请求?我是否需要定义一个默认服务器,它只会将事情退回到 404 秒?
我有一个 Nginx 实例,使用 SNI 从单个 IP 为多个 HTTPS 域提供服务。
设置的唯一故障是,每当请求服务器裸 IP 的 URL 或在该 IP 上列出的没有相应 HTTPS 服务器块的域时,Nginx 都会以第一个(作为默认)域进行响应。在这种情况下,我更愿意简单地返回一个标准的 403 Forbidden——我会设置一个默认的服务器块来做到这一点,但我看不到解决客户端证书不匹配警告的方法。
(如何 c|C)我将 Nginx 配置为拒绝对此类未知/未定义域的请求,而无需指定会扰乱浏览器的特定 ssl 证书?(即,我需要 Nginx 在用“坏”证书扰乱客户端之前用 403 拒绝请求 - 从客户端的 POV 这应该与根本没有定义 HTTPS 服务器块的情况相同。)