Nginx作为web服务器的使用配置

概述

    Nginx是一款免费开源的web服务器,同时也可以作为http、imap/pop3协议进行反代服务器,本篇介绍一些nginx作为web服务器方面的相关配置,具体包含:

    1、nginx基础概念介绍

    2、nginx核心模块配置指令介绍

    3、ngx_http_access_module模块实现基于IP的访问控制的配置

    4、ngx_http_basic_module模块实现基于basic用户认证的访问控制的配置

    5、ngx_http_stub_status_module模块实现web化查看nginx状态信息的配置

    6、ngx_http_referer_module模块实现基于引用的访问控制(防盗链)的配置

    7、ngx_http_log_module模块实现nginx日志管理的配置

    8、ngx_http_gzip_module模块实现响应报文压缩传输的配置

    9、ngx_http_ssl_module模块实现nginx支持https协议的配置

    10、ngx_http_rewrite_module模块实现URL重写

    11、ngx_http_fastcgi_module模块实现nginx与PHP的结合

    12、实战一:LNMP部署wordpress

    13、实战二:LNMP部署phpMyAdmin,并实现https的访问
                

               

第一章    nginx基础概念介绍

    1、IO基础概念

        同步/异步:关注的是消息通知机制,也就是被调用者在任务完成后是否通知调用者任务完成的消息

            同步:等待对方返回消息

    异步:被调用者通过状态、通知或回调方法,通知调用者被调用者的运行状态

        阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态

            阻塞:调用者在等待被调用者的结果返回之前,会被挂起,不能做其他任何事情,就是阻塞

            非阻塞:调用者在等待被调用者的结果返回之前,不会被挂起,可以做其他任务,就是非阻塞

        

    2、常见IO模型

        I/O类型:

            网络IO:本质是socket读取

            磁盘IO:数据流

    

        无论是网络IO还是磁盘IO都会经历两个阶段:

            第一步:等待数据准备完成阶段。也就是数据首先会从SOCKET或磁盘上加载到内核的内存空间(内核缓冲区)

            第二步:数据从内核复制到进程。数据从内核内存的缓冲区,复制到用户空间的进程的内存中

    

        阻塞型IO:

            从请求发起到请求结束,整个过程都是出于阻塞状态;

        非阻塞型IO:

            在等待数据准备阶段,也就是从磁盘到内核内存这个阶段是处于盲等待阶段,请求方不断的询问被请求方的资源是否准备好了。在第2阶段,也就是请求的内容从内核内存复制到用户内存时,是处于阻塞状态的。

        复用型IO:

            在准备阶段,请求是交给一个中间代理,在内核中默认已经提供,一个是基于BSD的select(),一个是基于sysv风格的poll(),此种IO模型下,请求不直接发送给被请求方,而是发送给select()这种代理。故在第1阶段,是阻塞在代理上,而不是服务器上,这样就可以同时发起多个IO请求,在第二解段,也是出于阻塞状态

        事件驱动IO:

            第一阶段是非阻塞的,但是会有通知机制,也就是说请求的资源准备好了之后,会通知请求者,进行第二步的操作;第二步依旧是阻塞状态

        异步IO:整个过程都是非阻塞的

        1图片1.png

      

    3、nginx的程序架构

        blob.png

            

        

        一个master进程,可生成一个或多个worker进程

    master:加载配置文件,管理worker进程,平滑升级,…

    worker:http服务,http代理,fastcgi代理…     

        缓存相关的进程:

            cache loader:载入缓存对象

            cache manager:管理缓存对象

      

    4、nginx的模块分类

        核心模块:core module,nginx实现功能的核心模块

        标准模块(自带模块):nginx自带的模块

            标准http模块

            可选http模块

            邮件相关模块

            stream模块(1.9版本之后才引入的,用于支持tcp、udp协议的反代模块)

        第三方模块:需要自己额外编译安装添加的第三方模块

        一般模块会有专用该模块的配置指令,还会引入相关配置的变量

     

      

第二章    nginx核心模块配置指令介绍

      

    1、nginx核心模块配置指令介绍

    core.png

     

    2、调整以下参数的值,验证配置是否有效

        worker_processes 数字|auto ;

        worker_cpu_affinity CPUMASK1 [CPUMASK2] …;

        worker_priority 数字;

    blob.png

    blob.png

  

    3、定义基于名称,端口,ip的虚拟主机

    blob.png

    blob.png

    blob.png

    blob.png

    4、location中alias和root的定义和使用

    blob.png

    blob.png

    blob.png

    blob.png

    blob.png

   

第三章    ngx_http_access_module模块实现基于IP的访问控制的配置

   

    1、access模块相关配置指令介绍

    access.png

    2、测试基于IP的访问控制

    blob.png

    blob.png

    blob.png

     

第四章    ngx_http_basic_module模块实现基于basic用户认证的访问控制的配置

     

    1、basic认证相关配置指令介绍

    basic.png

    2、测试基于basic用户认证的访问控制

    blob.png

    blob.png

    blob.png

    blob.png      

    blob.png

    blob.png

    blob.png

        

第五章    ngx_http_stub_status_module模块实现web化查看nginx状态信息的配置

     

    1、stub_status模块相关配置参数介绍

    status.png

    

    2、status页面的配置    

    blob.png

    blob.png

            

第六章    ngx_http_referer_module模块实现基于引用的访问控制(防盗链)的配置

     

    1、referer模块相关配置参数介绍

    referer.png

    

    2、定义referer相关示例

    blob.png

    blob.png

        

第七章    ngx_http_log_module模块实现nginx日志管理的配置

     

    1、log模块相关配置参数介绍

    log.png

        

     

第八章    ngx_http_gzip_module模块实现响应报文压缩传输的配置

     

    1、gzip模块相关配置参数介绍

    gzip.png

     

第九章    ngx_http_ssl_module模块实现nginx支持https协议的配置

     

    1、ssl模块相关配置参数介绍

    ssl.png

       

第十章    ngx_http_rewrite_module模块实现URL重写

     

    1、rewrite模块相关配置参数介绍

    rewrite.png

    2、rewrite示例:

    blob.png

    blob.png     

    blob.png

      

第十一章    ngx_http_fastcgi_module模块实现nginx与PHP的结合

     

    1、fastcgi模块相关配置参数介绍

    fastcgi.png

     

第十二章    实战一:LNMP部署wordpress

    

    1、环境介绍:

        CentOS7.2系统,地址为10.1.32.72

        rpm包安装Nginx-1.10版本

        yum安装mariadb-server以及php-fpm

    2、安装相关程序包

    blob.png

    blob.png

    

    3、按需修改php-fpm配置文件,mariadb配置文件,启动php-fpm和mariadb

    blob.png

    blob.png

    4、修改nginx配置文件,启动nginx

    在nginx配置文件中http段加入如下配置,新建一个虚拟主机

    1477487179627310.png

    1477487323178267.png    

      

    5、提供wordpress程序包,创建wordpress数据库,授权一个数据库用户,web初始化安装wordpress

    blob.png    

    blob.png

    blob.png

    blob.png

第十三章    实战二:LNMP部署phpMyAdmin,并实现https的访问

    1、环境说明

        基于上个实验的部署的LNMP平台,证件一个基于ssl的虚拟机,然后将phpMyadmin部署在该ssl虚拟机内部

    2、利用本机作为私有CA服务器,颁发证书

    blob.png

    blob.png

    blob.png

    blob.png    

     

    3、修改nginx配置文件,新建一个https虚拟主机

    ssl示例.png

    blob.png

    

    4、提供phpMyadmin,然后web化安装

    blob.png

    blob.png

    blob.png

原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/54617

(0)
M20-1倪文超M20-1倪文超
上一篇 2016-10-27 10:15
下一篇 2016-10-27 11:19

相关推荐

  • CentOS 6.5 LVM磁盘管理学习笔记(二)

    ACTIVE            '/dev/vg51cto/LogVol04' [22.80 GiB]inherit  ACTIVE       …

    Linux干货 2016-08-29
  • 数据的游戏:冰与火

    我对数据挖掘和机器学习是新手,从去年7月份在Amazon才开始接触,而且还是因为工作需要被动接触的,以前都没有接触过,做的是需求预测机器学习相关的。后来,到了淘宝后,自己凭兴趣主动地做了几个月的和用户地址相关数据挖掘上的工作,有一些浅薄的心得。下面这篇文章主要是我做为一个新人仅从事数据方面技术不到10个月的一些心得,也许对你有用,也许很傻,不管怎么样,欢迎指…

    Linux干货 2016-08-15
  • 马哥教育网络班22期+第01周课程练习

    一、描述计算机的组成及其功能:     根据冯·诺依曼体系结构,把计算机划分为五大部件:运算器、控制器、存储器、输入设备、输出设备。 运算器(加法器):cpu的核心部件,也是计算机存在的价值之一,其采用二进制方式进行计算(因为电阻的存在,使得十进制无法精准处理);控制器:控制CPU读指令[立即数和间接数],指令含有运算器需要的数…

    Linux干货 2016-08-12
  • Linux基础之加密通讯过程详解

    加密通讯过程详解 第一阶段 客户端->服务器端 向服务器声明自己的加密通讯协议版本,ssl或者tls 支持的加密算法 支持的压缩算法 第二阶段 服务器端->客户端 向客户端确认使用的加密通讯协议版本 确认的加密方法 确认压缩方法 服务器端证书 第三阶段 客户端->服务器端 客户端验证服务器端证书 发证机构 证书完整性 证书持有者 证书有效期…

    2017-09-16
  • 文件查找命令之locate、find简析

    文件查找命令之locate、find简析    在工作中经常会在文件系统上查找符合条件的文件,今天学习了文件查找命令,在此简析locate和find两个文件查找工具。 一、杂项知识整理 1、find的选项-user的实质是通过UID查找,如果两个用户的UID相同,其会显示两个用户的所有符合条件的文件。 2、查找时-name "*…

    Linux干货 2016-08-15
  • Shell脚本编程中的if、case、for、while、until命令

    为何要学编程中的if、case、for、while、until命令?        作为一个运维工程师,总会听到自动化,实际自动化离不开编写shell脚本,而shell脚本中却又离不开编程中的if、case、for、while、until, 这些关键字。 了解编程中的if、case、for、while、until命令,…

    Linux干货 2016-08-19