Web服务器ip访问配置参考
2010-08-21 12:31:36 阿炯

在对web服务器的配置中,会有对ip访问的控制,(半)开放或禁止访问,只能通过设定的域名访问,而不能直接通过服务器的IP地址访问,这里分别对apachenginx这两个主流web服务器的进行了配置说明。

Apache

有两个方法可以实现,都是修改httpd.conf文件来实现的,下面举例说明。

方法一:在httpd.conf文件最后面,加入以下代码
NameVirtualHost *:80

ServerName 222.xxx.xxx.xxx
DocumentRoot /xxx/xxx

Order Allow,Deny
Deny from all

---------或者--------

NameVirtualHost *:80

ServerName 222.xxx.xxx.xxx

Order Allow,Deny
Deny from all

说明:上面部分是实现拒绝直接通过222.*.*.*这个IP的任何访问请求,这时如果你用222.*.*.*访问,会提示拒绝访问。

方法二:在httpd.conf文件最后面,加入以下代码

NameVirtualHost 222.*.*.*:80

DocumentRoot "/var/www/"
ServerName 222.*.*.*

DocumentRoot "/var/www/"
ServerName 3w.freeoa.net

说明:通过222.*.*.*这个IP直接访问的请求指向"/var/www/"目录下,这可以是个空目录,也可以在里面建一个首页文件,如index.hmtl,首面文件内容可以是一个声明,说明不能通过IP直接访问。

修改后要重置apache。

-------------------------
Nginx


nginx 的设定和httpd类似,都是第一个服务器作为默认的服务器,除非明确指定某个服务器的状态为 default
server {
listen       80 default;
server_name  _;
location / {
root   html;
index  403.html;
}
}

有时我们并不希望客户端收到403的禁止信息,可能404更有迷惑性,则可以如下设置:
server {
listen       80 default;
server_name  _;
location / {
root   html;
#index  403.html;
return 404;
}
}

nginx use a default page for non-domains
nginx下配置基本ip直接访问

server {
 listen 80 default;
 server_name _;
 root /var/www/default/;
}

禁止根默认页的访问,仅开放某些目录或别名的访问。

server {
 listen 80 default;
 server_name _;
 location / {
  return 403;
 }
 location /sf {
  alias /home/freeoa/sf;
  autoindex on;    
 }
}


该文章最后由 阿炯 于 2014-03-17 17:20:42 更新,目前是第 2 版。