企业网站部署与优化--Nginx网站服务(运行控制,访问状态统计,基于授权和客户端的访问控制,基于IP,端口,域名的虚拟web主机访问)

前言

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个并发请求

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

1.2:Nginx编译安装(过程)

安装支持软件

[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel

创建运行用户、组

[root@localhost ~]# useradd -M -s /sbin/nologin nginx  '//-M 不创建家目录'

编译安装Nginx

先mount.cifs挂载宿主机中的nginx软件包文件夹
[root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz
[root@localhost ~]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_ status_ module	'//开启stub_status状态统计模块'
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin	'//nginx命令执行路径优化'
[root@locaThost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
Irwxrwxrwx 1root root27 516 16:50 /usr/local/sbin/nginx ->/usr/local/nginx/sbin/nginx

1.3:运行控制(实验过程)

Nginx添加为系统服务

第一种方法,使用systemctl工具进行管理

[root@localhost ~]# vim /lib/systemd/system/nginx.service		'//添加使用systemctl工具进行管理'
[Unit]
Description=nginx	'//描述'
After=network.target	'//描述服务类别'

[Service]
Type=forking	'//后台运行形势'
PIDFile =/usr/local/nginx/logs/nginx.pid	'//PID文件位置'
ExecStart=/usr/local/nginx/sbin/nginx		'//启动服务'
ExecReload=/usr/bin/kill -S HUP $MAINPID	'//根据PID重载配置'
ExecStop=/usr/bin/kill -S QUIT $MAINPID		'//根据PID终止进程'
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service

第二种方法,添加使用service工具进行管理

[root@localhost ~]# cd /etc/inid.d		'//或者添加使用service工具进行管理'
[root@localhost init.d]# ls
[root@localhost init.d]# vim 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}"
  		exit 1
esac
exit 0
[root@localhost init.d]# chmod +x nginx
[root@localhost init.d]# chkconfig --add nginx
[root@localhost init.d]# chkconfig --level 35 nginx on

在这里插入图片描述

此时,开启服务,关闭防火墙,就可以访问nginx网址了

[root@localhost init.d]# service nginx start
[root@localhost init.d]# systemctl stop firewalld
[root@localhost init.d]# setenforce 0
[root@promote init.d]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14889/nginx: master 

在这里插入图片描述

1.4:配置文件nginx.conf

全局配置

#user nobody;
worker_ processes 1;
#error_ log logs/error.log;
#pid logs/nginx.pid;

1/O时间配置

events {
  use epoll;
  worker connections 4096;
}

HTTP配置

http {
  ....
  access_log logs/access.log main;
  sendfile	on;
  ...
  keepalive_ _timeout 65;
  server {
	listen  80;
	server name localhost;
	charset utf-8;
	location / {
		root html;
		index index.html index.php; }
	error_ page 500 502 503 504 /50x.html;
	location = /50x.html {
		root html; }}
}

1.5:Nginx的访问状态统计(实验过程)

启用HTTP_ STUB_ STATUS状态统计模块

配置编译参数时添加–with-http stub status module

nginx -V查看已安装的Nginx是否包含HTTP_ STUB _STATUS模块

修改nginx.conf配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http{
	server {
		listen 80;
		server name localhost;
		charset utf-8;
		location / {
			root html;
			index index.html index.php;
        }
		location ~/status {		'//添加此段'
			stub_ status on;
			access_ log off;
        }
    }
}

在这里插入图片描述

查看当前的状态统计信息在这里插入图片描述

二:Nginx访问控制

2.1:基于授权的访问控制

配置步骤与Apache基本一致

●生成用户密码认证文件

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

●重启服务,访问测试

1.这里的话和Apache的配置是一样的,需要用到htpasswd工具,安装此项工具

[root@localhost ~]# yum install -y httpd-tools

2.生成用户密码文件

[root@localhost nginx]# htpasswd -c /usr/local/nginx/passwd.db jerry
New password: 
Re-type new password: 
Adding password for user jerry
[root@localhost nginx]# ll passwd.db 
-rw-r--r--. 1 root root 44 89 14:10 passwd.db

3.减少权限,提高安全

[root@localhost nginx]# chmod 400 passwd.db 
[root@localhost nginx]# chown nginx passwd.db 
[root@localhost nginx]# ll passwd.db 
-r--------. 1 nginx root 44 89 14:10 passwd.db

4.修改配置文件

[root@localhost nginx]# vim /usr/local/nginx/conf/nginx.conf
 server {
        listen       80;
        server_name  www.cllt.com;

        charset utf-8;

        #access_log  logs/host.access.log;

        location / {  
            auth_basic "secret";     '在此项中添加权限'
            auth_basic_user_file /usr/local/nginx/passwd.db;  '密码文件位置'
            root   html;
            index  index.html index.html;
        }

5.进行测试
在这里插入图片描述

2.2:基于IP地址进行的访问控制

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

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

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

1.修改主配置文件

[root@localhost nginx]# vim /usr/local/nginx/conf/nginx.conf
  server {
        listen       80;
        server_name  www.cllt.com;

        charset utf-8;

        #access_log  logs/host.access.log;

        location / {
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
            deny 192.168.179.110;  '禁止此ip地址的主机访问'
            allow all;              '其它全部允许'
            root   html;
            index  index.html index.html;
        }

2.测试
在这里插入图片描述

三:Nginx虚拟主机

3.1:Nginx虚拟主机应用

Nginx支持的虚拟主机有三种

●基于域名的虚拟主机

●基于IP的虚拟主机

●基于端口的虚拟主机

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

3.2:基于域名的虚拟Web主机

配置步骤

●准备网站目录及测试文件

[root@promote www]# mkdir benet kgc
[root@promote www]# ls
benet  cgi-bin  html  kgc
[root@promote www]# cd benet/
[root@promote benet]# vim index.html

<h1>this is benet web</h1>
[root@promote benet]# cd ../kgc/
[root@promote kgc]# vim index.html

<h1>this is kgc web</h1>
[root@promote kgc]# cd ..
[root@promote www]# tree ./
./
├── benet
│   └── index.html
├── cgi-bin
├── html
└── kgc
    └── index.html
[root@promote www]# vim /etc/named.conf
[root@promote www]# vim /etc/named.rfc1912.zones 
[root@promote www]# cd /var/named
[root@promote named]# cp -p named.localhost kgc.com.zone
[root@promote named]# vim kgc.com.zone 
[root@promote named]# cp -p kgc.com.zone benet.com.zone
[root@promote named]# systemctl start named

调整nginx.conf配置文件

[root@promote named]# vim /usr/local/nginx/conf/nginx.conf
    server {
       server_name www.kgc.com;
       location /  {
          root /var/www/kgc;
          index index.html index.php;
        }
    }
    server {
       server_name www.benet.com;
       location /  {
          root /var/www/benet;
          index index.html index.php;
        }
    }

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

3.3:基于端口的虚拟web主机

配置步骤

修改配置文件

server {
        listen       192.168.100.80:80;  
        server_name  www.kgc.com;
        charset utf-8;
        access_log  logs/www.kgc.com.access.log;
        location / {
            root   /var/www/html/kgc;
            index  index.html index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
   server {
        listen       192.168.100.80:8080;    '修改为8080端口'
        server_name  www.kgc.com;
        charset utf-8;
        access_log  logs/www.kgc02.com.access.log;  
        location / {
            root   /var/www/html/kgc02;  '添加新的站点首页'
            index  index.html index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

3.4:基于IP的虚拟web主机

配置步骤

主机配置两个IP地址修改配置文件

[root@localhost conf]# vim /usr/local/nginx/conf/nginx.conf
 server {
        listen       192.168.100.80:80;
        server_name  www.kgc.com;
        charset utf-8;
        access_log  logs/www.kgc.com.access.log;
        location / {
            root   /var/www/html/kgc;
            index  index.html index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       192.168.100.8;
        server_name  www.kgc02.com;
        charset utf-8;
        access_log  logs/www.kgc02.com.access.log;
        location / {
            root   /var/www/html/kgc02;
            index  index.html index.html;
        }
error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_47151650/article/details/107866532