转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]
如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
背景说明
暴露IP容易被扫描,而且会被DDOS等攻击。而域名则由于经过了DNS解析,可以很方便的套上攻击检测。
效果演示
ip无法访问:
域名正常访问:
配置步骤
1、修改虚拟主机配置文件,通常在:
- Ubuntu/Debian:
/etc/apache2/sites-available/
- CentOS/RHEL:
/etc/httpd/conf.d/
2、先配置http方式。添加默认的虚拟主机,用于捕获所有直接通过 IP 地址访问的请求。
bash
sudo vim /etc/apache2/sites-enabled/000-default.conf
在conf文件的最前面加上:
bash
<VirtualHost *:80>
ServerName 123.123.123.123 # 替换为你的服务器 IP 地址
RewriteEngine On
# 如果访问不是通过域名,则返回 403
RewriteCond %{HTTP_HOST} !^(www\.)?yourdomain\.com$ [NC]
RewriteRule ^ - [F]
</VirtualHost>
3、配置默认的域名虚拟主机,还是在这个conf文件,只是把你原来的内容改了。如果本来就有的话就可以不用动:
bash
<VirtualHost *:80>
ServerName www.example.com # 你的域名
ServerAlias example.com # 你的域名
DocumentRoot /var/www/html # 你的网站根目录
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
4、然后先配置https方式,不过没用到就跳过步骤4和5。
bash
sudo vim /etc/apache2/sites-enabled/default-ssl.conf
在conf文件的**前面部分(注意得是if model 里面)**加上:
bash
<VirtualHost *:443>
ServerName 123.123.123.123 # 替换为你的服务器 IP
SSLEngine On
SSLCertificateFile /path/to/your/certificate.crt # 你的证书路径
SSLCertificateKeyFile /path/to/your/private.key # 你的证书路径
# 禁止通过 IP 访问
RewriteEngine On
RewriteCond %{HTTP_HOST} ^123\.123\.123\.123$ # 替换为你的服务器 IP
RewriteRule ^ - [F]
</VirtualHost>
5、配置默认的域名虚拟主机,可以保持不动。
6、重启 Apache 服务。每次修改配置后,记得重新加载 Apache 服务:
bash
sudo systemctl reload apache2