我们在使用lanmp环境搭建网站的时候,通常会有域名和ip,我们可以通过这两个来进行访问,但是这里
有个不安全的因素,就是不论我们的ip解析到那个域名,都可以通过那个域名来访问(比如
在/etc/hosts中进行定义:ip 域名),因此为了增加安全性以及使得网站的访问规范化,防止别人的
乱解析,我们可以在虚拟主机的配置文件中增加默认虚拟主机的配置文件,这样可以禁止掉ip的访问,
避免ip地址随便的解析域名都可以访问该网站,下面来看看具体的实现方法:
一、apache
apache的虚拟主机配置文件一般在一个文件中(/usr/local/apache/conf/extra/httpd.conf),不论有
多少网站,内容都分为一个个模块写在一个配置文件中,这时候第一个模块的虚拟主机的配置文件就是
默认的虚拟主机,我们可以在第一个虚拟主机配置文件之前写入如下内容,即把第一个虚拟主机的访问
给禁止:
<VirtualHost *:80>
DocumentRoot "/tmp/tmp"
ServerName 111.com
<Directory /tmp/tmp>
Order allow,deny
Deny from all
</Directory>
<VirtualHost *:80>
这样我们就把指向我们网站的随意解析的域名以及ip的访问给禁止了,只要解析到这台机器的域名,不
管是什么域名,只要在配置文件中没有配置,都会访问到这个默认的虚拟主机上来,从而被禁止。
当然,我们也可以不写<Directory>中的内容,只要我们创建的目录没有读写的权限,一样可以禁止。
二、nginx
nginx的虚拟主机配置文件我们一般都是分开的,放在一个目录中,基本上一个虚拟主机一个配置文件,
这时候,我们就需要定义一个default.conf,这个文件和上面的apache中的第一个虚拟主机配置文件作
用基本相同,都是防止其他人的胡乱解析,不论用什么域名来进行访问这台机器,只要其它的配置文件
(*.conf)中没有配置,都会访问到这个主机上,然后被禁止,使用ip来访问也同样会被禁止掉,显示
403,笔者之前由于使用云主机来进行实验,直接使用ip访问,一直显示403,就是这个原因。
内容如下:
server
{
listen 80 defult_server;
servername localhost;
index index.htm index.html index.php;
root /tmp/tmp;
deny all;
}