首页 > 代码库 > The server of Nginx(二)——Nginx访问控制和虚拟主机

The server of Nginx(二)——Nginx访问控制和虚拟主机

一、Nginx访问控制

(1)基于授权的访问控制

  Nginx于Apache一样,可以实现基于用户授权的访问控制,当客户端要访问相应网站或者目录时要求输入用户名密码才能正常访问,配置步骤与Apache基本一致

  第一步:生成用户密码认证文件,使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与之前讲解Apache认证时一样

~]#htpasswd  -c  /usr/local/nginx/passwd.db   test   #回车后会让输入两次密码

  修改密码文件的权限为400,将所有者改为nginx,使nginx的运行用户能够读取

~]#chmod 400  /usr/local/nginx/passwd.db
~]#chown nginx /usr/local/nginx/passwd.db

  第二步:修改主配置文件对应目录,添加认证配置项auth项,检查语法,重启

1 server { ...
2   local / {
3      root  html;
4     index  index.html  index.php;
5     auth_basic "secret";
6     auth_basic_user_file  /usr/local/nginx/passwd.db;
7 ~]#nginx -t
8 ~]#service nginx reload

(2)基于客户端的访问控制

Nginx基于客户端的访问控制要比Apache简单,规则从上往下匹配,如匹配则停止,不再往下匹配

格式:

deny ip/ip段

allow ip/ip段

例:除了10.1.1.0网段,192.168.1.0网段,剩余所有ip还有192.168.1.1都不能登录

1 location / {
2   root  html;
3   index  index.html  index.php;
4   deny 192.168.1.1;
5   allow 192.168.1.0/24;
6   allow 10.1.1.0/16;
7   deny all;
8   }

二、Nginx虚拟主机

  可以在一台服务器上,创建多个网站,每个虚拟Web站点都有独立的"server{}"配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的

  Nginx支持的虚拟主机有三种:基于域名、基于IP、基于端口

(1)基于域名的虚拟主机搭建(最常用90%以上都用这种)

①为www.bt.com 和 www.test.com准备域名解析,可修改hosts文件

②准备各网站的网站目录及测试首页

~]#mkdir -p /var/www/html/btcom  testcom

③在两个文件夹里创建index.html

④修改nginx.conf,配置两个 "server{}"区域(注意红色字体是我们要注意的)

 1 server {
 2   listen    80;
 3   server_name  www.test.com;
 4   charset utf-8;
 5   access_log  logs/www.test.log  main;
 6   location  /  {
 7       root  /var/www/html/testcom;
 8       index  index.html  index.htm;
 9   }
10   error_page  500 502  503 504  /50x.html;
11   location = /50x.html {
12       root   html;
13   }
14 }

以域名访问两个网站

(2)基于IP的虚拟主机搭建(IP太贵了,不常用)

①准备多个IP地址,可使用子接口或者多网卡

例如:ifconfig  eth0:0 192.168.1.2/24   设置子接口网址

②准备各网站的目录及测试首页

③修改nginx.conf,配置两个 "server{}"区域(注意红色字体是我们要注意的,注意对比区别)

 1 server {
 2   listen    192.168.1.2:80;
 3   server_name  192.168.1.2;
 4   charset utf-8;
 5   access_log  logs/www.test.log  main;
 6   location  /  {
 7       root  /var/www/html/testcom;
 8       index  index.html  index.htm;
 9   }
10   error_page  500 502  503 504  /50x.html;
11   location = /50x.html {
12       root   html;
13   }
14 }

以IP地址访问两个网站

(3)基于端口的虚拟主机搭建(公司内部测试使用较多)

①选择端口,选择系统中不用的端口

②准备各网站的目录及测试首页

③视情况准备域名解析,根据配置文件里判断是否要解析

④修改nginx.conf,配置两个 "server{}"区域(注意红色字体是我们要注意的,注意对比区别)

 1 server {
 2   listen    192.168.1.2:81;  #注意:第二个server端口改为81,前面需要用域名登录就把前面的ip地址改为域名
 3   server_name  192.168.1.2;   #注意:根据需要改为域名
 4   charset utf-8;
 5   access_log  logs/www.test.log  main;
 6   location  /  {
 7       root  /var/www/html/testcom;
 8       index  index.html  index.htm;
 9   }
10   error_page  500 502  503 504  /50x.html;
11   location = /50x.html {
12       root   html;
13   }
14 }

⑤以IP地址或者域名访问两个网站,注意输入ip时,后面跟端口号http://192.168.1.2;81

The server of Nginx(二)——Nginx访问控制和虚拟主机