目录

一、nginx的简介

1、nginx的概述

2、nginx和Apache相对的优点

二、nginx的搭建及配置

1、安装nginx

2、添加nginx系统服务

3、全局配置

4、I/O事件配置

5、访问状态统计配置

6、基于授权密码访问控制

7、基于客户端的访问控制

8、基于域名的虚拟主机控制

9、基于ip地址

10、基于端口


一、nginx的简介

1、nginx的概述

Nginx是一个高性能的HTTP和反向代理服务器

是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件代理服务器

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

实际上仅支持20000~25000个并发请求

2、nginx和Apache相对的优点

1.nginx相对于apache的优点:

轻量级,同样起web服务,比apache占用更少的内存及资源

抗并发,nginx处理请求是异步非阻塞的,而apache是阻塞型的在高并发下,nginx能保持低资源低消耗高性能

高度模块化的设计,编写模块相对简单

2.apache相对于nginx的优点∶

Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)

模块多,基本想到的都可以找到

少bug, nginx的bug相对较多

超稳定
 

二、nginx的搭建及配置

1、安装nginx

(1)查找安装包

[root@www opt]# ls

nginx服务器 命令大全 nginx服务器配置要求_运维

(2) 安装依赖包

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

nginx服务器 命令大全 nginx服务器配置要求_html_02

(3) 创建运行用户 、组

[root@www opt]# useradd -M -s /sbin/nologin nginx

nginx服务器 命令大全 nginx服务器配置要求_运维_03

(4) 编译安装Nginx

[root@www opt]# tar zxvf nginx-1.12.2.tar.gz
[root@www opt]# cd nginx-1.12.2/ 
[root@www nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \                #指定nginx安装路径
> --user=nginx \                          #指定用户名
> --group=nginx \                      #指定组名
> --with-http_stub_status_module        #启用http_stub_status_module模块以支持状态统计

nginx服务器 命令大全 nginx服务器配置要求_nginx_04

    编译并安装

[root@www nginx-1.12.2]# make -j 4 && make install

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_05

 创建软链接加入$PATH

[root@www nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin

nginx服务器 命令大全 nginx服务器配置要求_html_06

(5) 检查、启动、关闭、重启Nginx服务

检查

[root@www nginx-1.12.2]# nginx -t           #检查nginx配置文件是否正确

nginx服务器 命令大全 nginx服务器配置要求_html_07

 启动服务

[root@www nginx-1.12.2]# nginx                      #启动nginx服务
[root@www nginx-1.12.2]# netstat -natp | grep nginx     #查看服务是否开启
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      126349/nginx: maste

nginx服务器 命令大全 nginx服务器配置要求_html_08

 关闭服务

[root@www nginx-1.12.2]# cat /usr/local/nginx/logs/nginx.pid    #查看nginx的pid号
126349

nginx服务器 命令大全 nginx服务器配置要求_运维_09

[root@www nginx-1.12.2]# kill -3 126349    #根据nginx服务的pid号退出服务
[root@www nginx-1.12.2]# killall -3 nginx    #根据服务名杀死服务

nginx服务器 命令大全 nginx服务器配置要求_运维_10

nginx服务器 命令大全 nginx服务器配置要求_运维_11

2、给nginx添加系统服务

编写配置脚本

[root@www nginx-1.12.2]# vim /etc/init.d/nginx   编写配置脚本
#!/bin/bash
#chkconfig: 35 99 20
#desc: this is nginx control scprit

CMD="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"

case "$1" in
start)
      $CMD
;;
stop)

      kill -s QUIT `cat $PID`
;;
restart)
        $0 stop
        $0 start
;;
reload)
       kill -s HUP `cat $PID`
;;
*)
   echo "Usage: $0 {start|stop|restart|reload}"
   exit 1
esac

[root@www conf]# chmod +x nginx               #添加执行权限
[root@www conf]# chkconfig -add nginx         #添加服务

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_12

 

nginx服务器 命令大全 nginx服务器配置要求_nginx_13

 3、nginx的全局配置

主配置文件

[root@www ~]# vim /usr/local/nginx/conf/nginx.conf

全局配置

#user  nobody;                     ##运行用户
worker_processes 1;                ##工作进程数,可配置成服务器内核数*2,如果网站访问量不大,一般设为1就够用了
 
#error_log  logs/error.log;        ####错误日志文件的位置

#pid        logs/nginx.pid;        ####PID文件的位置

4、I/O事件配置

events {
    use epoll;			#使用epoll模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
    worker_connections  4096;			#每个进程处理 4096个连接
}

epoll(socket描述符)是Linux内核]为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率

若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数 已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性 能表现。

如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。

在Linux平台.上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
 

5、访问状态统计配置

Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,编译安装Nginx时需添加--with-http_stub_status_module来启动模块。

36     server {
 37         listen       80;
 38         server_name  www.zty.com;               #配置域名
 39 
 40         #charset utf-8;                        


 location /status{
 49             stub_status on;                 添加访问控制
 50             access_log off;
 51         }

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_14

 

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_15

6、基于授权密码的访问控制

生成密码控制文件

[root@www ~]# yum install httpd-tools.x86_64  -y
[root@www conf]# htpasswd -c /usr/local/nginx/passwd.db zs
[root@www conf]# chown nginx /usr/local/nginx/passwd.db 
[root@www conf]# chmod 400  /usr/local/nginx/passwd.db
[root@www conf]# vim nginx.conf
  location /status{
           # stub_status on;
           # access_log off;
            auth_basic "secret";                      
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

[root@www conf]# systemctl restart nginx

 

nginx服务器 命令大全 nginx服务器配置要求_运维_16

 

nginx服务器 命令大全 nginx服务器配置要求_nginx_17

测试

nginx服务器 命令大全 nginx服务器配置要求_apache_18

7、基于客户端的访问控制

基于客户端的访问控制
基于客户端的访问控制简介 基于客户端的访问控制是通过客户端 IP 地址,决定是否允许对页面访问。Nginx 基于 客户端的访问控制要比 Apache 简单

规则如下:

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

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

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

[root@www conf]# vim nginx.conf
deny  192.168.222.1;
           allow  all;
[root@www conf]# systemctl restart nginx

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_19

8、基于域名虚拟主机控制

[root@www var]# cd www
[root@www www]# cd html/
[root@www html]# echo "this is zty web" > dev/index.html
[root@www html]# echo "this is abc web" > abc/index.html

[root@www html]# vim /usr/local/nginx/conf/nginx.conf


    server {
        listen       80;
        server_name  www.dev.com;

        charset utf-8;

        access_log  logs/dev.access.log;

        location / {
            root   /var/www/html/dev;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

   server {
        listen       80;
        server_name  www.abc.com;

        charset utf-8;

        access_log  logs/abc.access.log;

        location / {
            root   /var/www/html/abc;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

nginx服务器 命令大全 nginx服务器配置要求_nginx_20

nginx服务器 命令大全 nginx服务器配置要求_html_21

 

 客户端进行测试

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_22

 

nginx服务器 命令大全 nginx服务器配置要求_nginx_23

9、基于ip地址

[root@www html]# vim /usr/local/nginx/conf/nginx.conf   #修改主配置文件

 listen       192.168.222.100;                           #修改ip地址

[root@www html]# systemctl restart nginx.service        #重启nginx服务

nginx服务器 命令大全 nginx服务器配置要求_运维_24

 测试

nginx服务器 命令大全 nginx服务器配置要求_nginx_25

10、基于端口 

[root@www html]# vim /usr/local/nginx/conf/nginx.conf   #修改主配置文件

 listen       192.168.222.100:234;                           #在IP地址后面添加端口号

[root@www html]# systemctl restart nginx.service        #重启nginx服务

nginx服务器 命令大全 nginx服务器配置要求_nginx服务器 命令大全_26

 测试

nginx服务器 命令大全 nginx服务器配置要求_运维_27