我有一个域名,我们称之为foo.dev
。
如果有人导航到我所拥有的子域以外的任何位置site-confs
,我希望它看起来好像域上根本没有设置任何内容。如果有人访问http://foo.dev
或http://www.foo.dev
或http://gibberish.foo.dev
,或尝试直接访问我的 IP 地址,我希望他们收到未找到错误。https 也是一样。
我发现的每一个搜索结果都说“只需使用 444”。但 444 仍然泄露了那里有服务器的信息;如果我访问http://gibberish.foo.dev
,它会说连接重置。如果我关闭服务器并尝试重新访问,它会说找不到该页面。
我已尝试过此操作site-confs/default.conf
:
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl;
server_name _;
return 444;
}
我遇到的另一个问题是,如果我导航到 https 子域(如)https://randomgiberish.foo.dev
,它会出于某种原因为我的子域提供网站服务,即使该子域无效!它甚至不会重置连接。
我的site-conf/mysterioussubdomain.foo.dev.conf
文件:
# only serve https
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl http2;
server_name mysterioussubdomain.foo.dev;
# Hide from search engine crawlers
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
# make sure ssl is enabled
include /config/nginx/ssl.conf;
client_max_body_size 0;
ssl_session_cache shared:SSL:10m;
proxy_buffering off;
location / {
include /config/nginx/proxy.conf;
# Set proxy headers
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# These are important to support WebSockets
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "Upgrade";
resolver 127.0.0.11 valid=30s;
set $upstream_proto http;
set $upstream_app myapp;
set $upstream_port 30000;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
location /health-check {
add_header Content-Type text/plain;
return 200 "OK\n";
}
}
编辑:我发现这个帖子表示要添加server_name_in_redirect off;
。这部分解决了第二个问题。现在它不再是随机子域导致内容被提供,而是给出无法确认真实性的错误。不过,这实际上与第一个问题相同。