LINUX ---nginx 虚拟主机的创建(基于 域名 . 端口 . ip )以及nginx访问控制

前言

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

一:Nginx服务基础(理论)

1.1:Nginx概述
一款高性能、轻量级Web服务软件

●稳定性高

●系统资源消耗低

●对HTTP并发连接的处理能力高

●单台物理服务器可支持30 000 ~ 50000个并发请求

●占用内存少,并发能力强

二:Nginx虚拟主机实验

2.1:Nginx虚拟主机应用

Nginx支持的虚拟主机有三种

●基于域名的虚拟主机

●基于IP的虚拟主机

●基于端口的虚拟主机

通过"server{}" 配置段实现

2.2 具体步骤,配置基于域名的虚拟主机

2.2.1 安装环境软件软件

[root@sha  opt]# yum -y install gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl \
> zlib-devel \
> pcre

解压nginx 软件

[root@sha  opt]# tar zxvf nginx-1.12.2.tar.gz

创建程序账户(不创建加目录 不允许登录)

[root@shanan nginx-1.12.2]# useradd -M -s /sbin/nologin nginx

2.2.2 编译安装nginx

[root@shanan nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \      //设置用户
> --group=nginx \     //设置组
> --with-http_stub_status_module   //安装统计模块

安装nginx

[root@sha  nginx-1.12.2]# make && make install

2.2.3 配置管理脚本,将服务交给service 管理

[root@sha conf]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:- 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in
  start)
   $PROG
   ;;
 stop)
 kill -s QUIT $(cat $PIDF)
  ;;
  restart)
   $0 stop
   $0 start
   ;;
  reload)
kill -s HUP $(cat $PIDF)
;;
  *)
  echo "Usage:$0 {start|stop|restart|reload}"
esac
exit0

测试服务管理

[root@sha logs]# service nginx start
[root@sha logs]# service nginx stop
[root@sha logs]# service nginx start
[root@sha logs]# service nginx restart

2.2.4:使用elinks软件运行控制nginx

使用elinks启动、重载配置、停止Nginx

[root@sha /]]# nginx	'//启动'
[root@sha /]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7180/nginx: master
[root@sha /]# yum -y install elinks
[root@sha /]# elinks http://localhost		'//显示"Welcome to nginx!"页面,表明Nginx服务已经正常运行'
[root@sha /]# killall -s HUP nginx	'//-S选项指定信号种类,HUP信号表示重载配置'
[root@sha /]# killall -s QUIT nginx	'//QUIT信号表示退出进程'

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.5 安装DNS软件以及配置正向解析

yum install -y bind
[root@sha conf]# vim /etc/named.conf
在这里插入图片描述

[root@sha conf]# vim /etc/named.rfc1912.zones
zone "dog.com" IN {
        type master;
        file "dog.com.zone";
        allow-update { none; };
};

zone "pig.com" IN {
        type master;
        file "pig.com.zone";
        allow-update { none; };
};

2.2.6 创建区域数据文件

root@sha conf]# vim /etc/named.conf
[root@sha conf]# vim /etc/named.rfc1912.zones
[root@sha named]# cp -p named.localhost  dog.com.zone
[root@sha named]# vim d
data/         dog.com.zone  dynamic/
[root@sha named]# vim dog.com.zone
[root@sha named]# cp -p dog.com.zone  pig.com.zone

在这里插入图片描述

2.2.7 设置nginx ,配置基于域名的虚拟主机

检查配置文件

[root@localhost ~]# nginx -t	'//检查'
 优化配置文件设置
[root@sha logs]# cd /usr/local/nginx/conf
[root@sha conf]# mv nginx.conf nginx.conf.back
[root@sha conf]# grep -v "#" nginx.conf.back > nginx.conf

[root@sha logs]# cd /usr/local/nginx/conf
[root@sha conf]# mv nginx.conf nginx.conf.back
[root@sha conf]# grep -v "#" nginx.conf.back > nginx.conf
Vim  /usr/local/nginx/conf/nginx.conf

 server {
       server_name  www.dog.com;
        location / {
       root /var/www/dog;
       index index.html  index.php;
      }
    }
   server {
      server_name  www.pig.com;
        location / {
       root /var/www/pig;
       index index.html  index.php;
      }
    }

2.2.8 在客户端访问域名测试

测试成功
在这里插入图片描述
在这里插入图片描述

2.3 测试自动统计访问量

2.3.1 修改nginx 配置参数

Vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述

2.3.2 在浏览器访问测试 192.168.100.50/status

在这里插入图片描述
在这里插入图片描述

2.4 基于端口的虚拟主机配置实验

2.4.1 修改nginx 配置参数

vim  /usr/local/nginx/conf/nginx.conf
  server {
        listen   192.168.100.50:80;
        server_name  www.pig.com;
        location / {
       root /var/www/pig;
       index index.html  index.php;
      }
    }


   server {
       listen       192.168.100.50:8080;
      server_name  www.pig.com;
      charset utf-8;
      access_log logs/www.pig8080.com.access.log;
        location / {
       root /var/www/pig8080;
       index index.html  index.php;
      }
       error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
       }
}
}

在这里插入图片描述

2.4.2 创建nginx 首页文件夹pig8080及首页文件index.html

在这里插入图片描述

2.4.3 浏览器访问测试

加端口测试成功
在这里插入图片描述
在这里插入图片描述

2.5 基于IP 创建虚拟主机

2.5.1 新增网卡一个,设置地址为192.168.100.131

2.5.2 修改地址解析

[root@sha pig8080]# vim /var/named/dog.com.zone

在这里插入图片描述

2.5.3 配置nginx 参数

   ---完整的配置文件
vim  /usr/local/nginx/conf/nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
     sendfile        on;
    keepalive_timeout  65;

 server {
        listen 192.168.100.131:80;
        server_name  www.dog.com;
        location / {
       root /var/www/dog;
       index index.html  index.php;
      }
    }

 server {
        listen   192.168.100.50:80;
        server_name  www.pig.com;
        location / {
       root /var/www/pig;
       index index.html  index.php;
      }
    }
     server {
        listen       192.168.100.50:8080;
       server_name  www.pig.com;
      charset utf-8;
      access_log logs/www.pig8080.com.access.log;
        location / {
       root /var/www/pig8080;
       index index.html  index.php;
      }
       error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
       }
}
}

在这里插入图片描述

2.5.4 浏览器访问测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三:Nginx访问控制

3.1:基于授权的访问控制

配置步骤与Apache基本一致

●生成用户密码认证文件

●修改主配置文件对相应目录,添加认证配置项

●重启服务,访问测试

3.2 生成用户密码认证文件,设置账号登陆访问nginx主页

[root@sha dog]# yum install -y httpd-tools        //因为没有htpasswd工具,所以需要安装
创建用户sha  并设置密码asd123
[root@sha dog]# htpasswd -c /usr/local/nginx/passwd.db sha  
New password:
Re-type new password:
Adding password for user sha
[root@sha dog]#

生成用户密码认证文件
[root@sha dog]#  cat /usr/local/nginx/passwd.db    
sha:$apr1$ddD6d/d2$5wtNjPjm9RKpu/b0T/qvL.

3.2.1 修改主配置文件对相应目录,添加认证配置项

[root@sha dog]# cd /usr/local/nginx/
[root@sha nginx]# ls
client_body_temp  fastcgi_temp  logs       proxy_temp  scgi_temp
conf              html          passwd.db  sbin        uwsgi_temp
[root@sha nginx]# chmod 400 /usr/local/nginx/passwd.db
[root@sha nginx]# chown nginx /usr/local/nginx/passwd.db
[root@sha nginx]# ll -d /usr/local/nginx/passwd.db
-r--------. 1 nginx root 42 88 13:24 /usr/local/nginx/passwd.db

3.2.2 修改配置文件,重启测试

[root@sha conf]# vim  /usr/local/nginx/conf/nginx.conf
 server {
        listen 192.168.100.131:80;
        server_name  www.dog.com;
        auth_basic "secret";
        auth_basic_user_file /usr/local/nginx/passwd.db;
        location / {
       root /var/www/dog;
       index index.html  index.php;
      }
    }

在这里插入图片描述

3.2.3 重启服务,在客户端浏览器测试

[root@sha conf]# service nginx restart

在这里插入图片描述

3.2.4 提示需要验证,输入刚才创建的账户密码

在这里插入图片描述

3.2.5 登陆成功访问

在这里插入图片描述

3.3:基于客户端的访问控制

通过客户端IP地址,决定是否允许对页面访问

3.3.1配置规则

deny IP/IP段:拒绝某个IP或IP段的客户端访问

allow IP/IP段:允许某个IP或IP段的客户端访问

规则从上往下执行,如匹配则停止,不再往下匹配

3.3.2配置步骤

修改主配置文件nginx.conf,添加相应配置项

vim  /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

3.3.4 重启服务,打开浏览器测试

[root@sha conf]# service nginx restart

客户机192.168.100.120 访问失败
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BIGmustang/article/details/107878046