我在VPS上有一个网站。
我的问题是,当我输入服务器的IP地址时,它会链接到网站。
即使输入mail.domain.com,它也会做同样的事情。
如何禁用它,以便访问者可以收到消息或被引导到域名?
我尝试在Cloudflare上禁用IP和邮件A记录,但没有效果。
我的设置是:
VPS on Linux Debian
Nginx
no control panel just command line
Cloudflare
DNS setup with BIND
我在VPS上有一个网站。
我的问题是,当我输入服务器的IP地址时,它会链接到网站。
即使输入mail.domain.com,它也会做同样的事情。
如何禁用它,以便访问者可以收到消息或被引导到域名?
我尝试在Cloudflare上禁用IP和邮件A记录,但没有效果。
我的设置是:
VPS on Linux Debian
Nginx
no control panel just command line
Cloudflare
DNS setup with BIND
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name "";
return 444;
}
您需要指定default_server
参数,以便所有不可用的服务器请求都会转到此服务器块
,该块会抛出444错误
。
444:连接关闭而没有响应
444
是什么意思。我以前没见过这个状态码。https://httpstatuses.com/444 - mpenhttps
怎么样? - mahfuz您可以使用重定向,nginx配置:
server {
listen 80;
server_name IP_ADDRESS;
return 301 http://YOUR.DOMAIN;
}
/etc/nginx/conf.d/default.conf
文件中。 - tread在其他指令之前添加一个server指令即可。
server {
listen 80;
server_name _;
return 404;
}
default_server
,那么这个会起作用吗?_
有特殊含义吗? - mpendefault_server
,那么它将无法工作。 _
没有特殊含义,您可以使用任何字符。 - Rickserver {
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;
}
openssl req -x509 -newkey rsa:2048 -days 10000 -nodes -subj '/CN=' -keyout null.key -out null.crt
然后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;
}
server {
listen 80;`enter code here`
server_name IP_ADDRESS;
return 301 http://YOUR.DOMAIN;
}
您可以尝试在以下位置设置服务器IP地址:
/etc/nginx/conf.d/default.conf
看起来是这样的:
server {
listen 80;
server_name localhost IP.OF.VPS.HERE;
server {
listen 80;
server_name subdomain.domain.com;
而主域名例如:
server {
listen 80;
server_name www.domain.com domain.com;
然后重新启动Nginx:
/etc/init.d/nginx restart
/etc/nginx/conf.d/subdomain.domain.com.conf
/etc/nginx/conf.d/domain.com.conf
/etc/nginx/conf.d/default.conf
*.conf
文件会自动读取吗?还是需要在某个地方包含它们? - luckydonaldinclude /etc/nginx/conf.d/*.conf;
。 - Ron/etc/nginx/conf.d/SERVER_IP_ADDRESS.conf
文件的顶部,并注释掉其下方的所有内容。#disabling accesing server by ip address
server {
listen SERVER_IP_ADDRESS:80 default;
server_name _;
return 404;
}
然后重新启动您的Nginx服务器(在Ubuntu上,可以通过service nginx restart
命令完成此操作)
现在,当您将服务器的IP地址放入浏览器URL字段中时,您将收到404错误。
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 default_server;
listen [::]:443 default_server;
return 444;
}
if ($http_host != "example.com") {
return 301 https://example.com;
}