VPS侦探论坛

 找回密码
 注册
查看: 84318|回复: 29

nginx关闭默认站点/空主机头(禁止IP直接访问、防止域名恶...

[复制链接]
发表于 2010-10-14 20:34:04 | 显示全部楼层 |阅读模式

默认情况下,只要将域名解析到vps的IP上,访问该域名就会访问到lnmp默认虚拟主机的默认页面。为了防止别人恶意将域名解析到自己的IP上,可以通过以下方法进行,修改/usr/local/nginx/conf/nginx.conf ,将里面的默认的虚拟主机server{}段修改为如下即可:
  1. server {
  2. listen 80 default_server;
  3. server_name _;
  4. return 500;
  5. }
复制代码
当然也可以将return 500;替换为rewrite ^(.*) https://www.vpser.net permanent;   将流量导入到你指定的网站上。也可以改成return 444; 这样所有的访问都被直接丢弃。
最后记住,/usr/local/nginx/sbin/nginx -s reload


使用空主机头后,原默认虚拟主机下的文件,如PHPmyadmin将无法访问,需要你加个二级域名指向phpmyadmin目录就行了。

对于开启了https的用户,未添加https站点的域名,也可以https访问,只是会访问默认的https网站并提示不安全、域名证书不匹配。
开启SSL后https的空主机头的设置
  1. server {
  2. listen 443 ssl default_server;
  3. server_name _;
  4. ssl on;
  5. ssl_certificate 随便设置一个ssl证书;
  6. ssl_certificate_key 随便设置一个ssl证书的key;
  7. return 500;
  8. }
复制代码


nginx 1.15.0 以上版本去掉ssl on;

如果是nginx 1.19.4或更高版本,可以添加 ssl_reject_handshake on; 不用再设置ssl证书和key及设置return 500,https站点未添加的域名使用https访问会直接拒绝握手,浏览器会报 ERR_SSL_UNRECOGNIZED_NAME_ALERT 的错误。配置如下:
  1. server {
  2. listen 443 ssl default_server;
  3. server_name _;
  4. ssl_reject_handshake on;
  5. }
复制代码


注意!注意!nginx 1.24.0及更高版本  listen 443 ssl default_server; 需要修改为:listen 443 ssl http2 default_server; 不然会报如下错误:nginx: [warn] protocol options redefined for 0.0.0.0:443 in /usr/local/nginx/conf/vhost/xxxx.conf:56 修过完成都是需要重启或reload nginx使其生效的。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2021-5-20 08:16:42 | 显示全部楼层


wm11261 发表于 2021-5-18 20:40
server {
        listen 443 default_server;
        ssl on;

nginx 1.15.0 以上版本去掉ssl on;

不是这个ip的ssl证书且不是ssl服务商签发的肯定会提示不安全,想要完美解决办法很简单,ip的ssl证书见过最低的价格是500+RMB
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2021-6-1 14:13:03 | 显示全部楼层

明月登楼 发表于 2021-5-24 17:42
为啥不给IP访问加个密码?

明月大佬居然来了。。。小白搞不来0.0
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2021-5-24 17:42:58 | 显示全部楼层



为啥不给IP访问加个密码?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2021-5-21 08:30:47 | 显示全部楼层

wm11261 发表于 2021-5-20 20:20
1.把nginx.conf里面自带的  80  server删了后,
2.访问解析了的域名、但lnmp里面没有添加的域名,
3.访问时 ...

只要域名解析到你服务器上,就会访问到你服务器上的默认虚拟主机,nginx.conf删掉了默认虚拟主机一般就是按配置文件include进去的顺序排第一个的网站是默认虚拟主机
如果网站你自己设置网站目录下没有index文件肯定会403,如果虚拟主机上有deny之类的设置或网站目录权限有问题也会403,没配置文件之类的没法说

军哥运维代购:http://shop63846532.taobao.com/

发表于 2021-5-20 20:20:17 | 显示全部楼层

1.把nginx.conf里面自带的  80  server删了后,
2.访问解析了的域名、但lnmp里面没有添加的域名,
3.访问时https的是403,http的会跳转自己添加的phpmyadmin网站,
4.上面3提到的phpmyadmin的二级域名网站→→我把这个网站指向了default/phpmyadmin的文件夹,也就是网页版的phpmyadmin网站


主要就是删了nginx.conf里面自带的  80  server 后,访问解析了到该ip的域名、但lnmp里面没有添加的域名,http的会跳转自己添加的网页版的phpmyadmin二级域名网站(default/phpmyadmin的文件夹)

发表于 2021-5-18 20:40:20 | 显示全部楼层

本帖最后由 wm11261 于 2021-5-18 20:41 编辑

server {
        listen 443 default_server;
        ssl on;
        server_name _;
        ssl_certificate /usr/local/nginx/conf/ssl/1.com.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/1.com.key;
        return 500;
}
空主机头ssl。会提示nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl"

改成
server {
        listen 443 ssl default_server;
        server_name _;
        #ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/1.com.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/1.com.key;
        return 500;
    }
,不提示"listen ... ssl”了,但https的ip访问还是提示不安全,这个ssl,写crt的还是pem的呢?用另外上传的和网站的ssl,测试都提示不安全

补充内容 (2021-5-19 17:07):
其中的1.com.crt和1.com.key,是nginx下ssl上传的的自己的证书文件,访问ip和解析却未添加的站点时,http返回500没问题,https还是会提示证书不安全,没变...

补充内容 (2021-5-19 17:09):
https会返回500了,但是一直不变绿。显示不安全
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-11-27 21:15:29 | 显示全部楼层

回复 1# 的帖子


将return 500;替换为rewrite ^(.*) http://www.abc.com permanent;  
输入ip地址访问时跳转到:https://www.abc.com这个网址上,前面规则写的是http,怎么跳转到是https?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2016-8-6 14:32:29 | 显示全部楼层


apache 怎么改呢?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-8-4 11:45:58 | 显示全部楼层

回复 21# 的帖子




最简单的方法默认目录下面放个index.php,里面写过判断域名的,不是你自己的域名就跳转等
或用.htaccess 进行跳转
发表于 2016-8-3 21:16:33 | 显示全部楼层

用LAMP如何设置空主机头?
发表于 2013-9-24 23:18:35 | 显示全部楼层

回复 1# 的帖子


使用这个之后全部都是500了,输入自己的域名访问也是500,别人恶意解析过来的域名访问也是500
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2013-3-26 19:16:49 | 显示全部楼层
这个问题就只能解决一个VPS上只有一个IP的吧。。
我有3个IP,然后就主IP 可以屏蔽掉,其他两个IP没有办法解决呢?
军哥能有什么好办法吗?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2013-3-26 15:54:42 | 显示全部楼层

回复 1# 的帖子

问题解决了   我弄错了

[ 本帖最后由 半人疯 于 2013-3-26 15:58 编辑 ]

军哥运维代购:http://shop63846532.taobao.com/

 楼主| 发表于 2012-9-26 11:55:47 | 显示全部楼层

回复 16# 的帖子

提示500就对了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2025-4-24 10:35 , Processed in 0.032844 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表