Kha*_*d A 32 ip dns nginx cloudflare server
我有一个关于VPS的网站.
我遇到的问题是,当我输入服务器的IP时,它会链接到网站.
即使进入mail.domain.com,它也会做同样的事情.
如何禁用它,以便访问者收到消息或被定向到域?
我尝试禁用IP并在云端闪存上发送记录,但它没有用.
我的设置是:
VPS on Linux Debian
Nginx
no control panel just command line
Cloudflare
DNS setup with BIND
Run Code Online (Sandbox Code Playgroud)
小智 27
你可以使用redirect,nginx配置:
server {
listen 80;
server_name IP_ADDRESS;
return 301 http://YOUR.DOMAIN;
}
Run Code Online (Sandbox Code Playgroud)
AMB*_*AMB 22
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
您需要指定default_server
参数,以便所有不可用的服务器请求转到server block
抛出的请求444 error
.
444:连接没有响应而关闭
参考:https://httpstatuses.com/444
小智 18
您可以在其他人之前添加服务器指令.
server {
listen 80;
server_name _;
return 404;
}
Run Code Online (Sandbox Code Playgroud)
jar*_*eeq 10
上述两种方法对我的情况都没有帮助 - 与 http 的 IP 连接按预期工作,但 https 重定向到按字母顺序排列的第一个 https 虚拟站点。1.19.4 以下的 nginx 的工作原理是添加空证书来阻止:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 default_server;
listen [::]:443 default_server;
ssl_certificate /etc/ssl/null.crt;
ssl_certificate_key /etc/ssl/null.key;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
证书可以用空 CN 生成,因此您无需担心填写它。
openssl req -x509 -newkey rsa:2048 -days 10000 -nodes -subj '/CN=' -keyout null.key -out null.crt
Run Code Online (Sandbox Code Playgroud)
然后 http/https 返回 444 (ERR_EMPTY_RESPONSE),在不同的配置中,https 返回 ERR_HTTP2_PROTOCOL_ERROR 以及您的空证书,这也可以表明那里什么都没有。
对于 nginx 1.19.4 来说更简单。它介绍了ssl_reject_handshake on | off
(http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_reject_handshake),您可以将证书“东西”替换为:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 default_server;
listen [::]:443 default_server;
ssl_reject_handshake on;
server_name "";
return 444;
}
Run Code Online (Sandbox Code Playgroud)
现在您会收到 http 444 (ERR_EMPTY_RESPONSE) 和 https ERR_SSL_UNRECOGNIZED_NAME_ALERT。不需要空证书。
小智 6
您可以使用重定向,nginx 配置:
server {
listen 80;`enter code here`
server_name IP_ADDRESS;
return 301 http://YOUR.DOMAIN;
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试将服务器IP地址设置为:
/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)
所以它看起来像这样:
server {
listen 80;
server_name localhost IP.OF.VPS.HERE;
Run Code Online (Sandbox Code Playgroud)
然后您可以指定子域虚拟主机,例如:
server {
listen 80;
server_name subdomain.domain.com;
Run Code Online (Sandbox Code Playgroud)
和主域,例如:
server {
listen 80;
server_name www.domain.com domain.com;
Run Code Online (Sandbox Code Playgroud)
然后重启Nginx:
/etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)
每个虚拟主机应该有自己的 *.conf 文件(为了更好的组织),例如:
/etc/nginx/conf.d/subdomain.domain.com.conf
/etc/nginx/conf.d/domain.com.conf
/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)