概述
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:整个过程都是非阻塞的
3、nginx的程序架构
一个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核心模块配置指令介绍
2、调整以下参数的值,验证配置是否有效
worker_processes 数字|auto ;
worker_cpu_affinity CPUMASK1 [CPUMASK2] …;
worker_priority 数字;
3、定义基于名称,端口,ip的虚拟主机
4、location中alias和root的定义和使用
第三章 ngx_http_access_module模块实现基于IP的访问控制的配置
1、access模块相关配置指令介绍
2、测试基于IP的访问控制
第四章 ngx_http_basic_module模块实现基于basic用户认证的访问控制的配置
1、basic认证相关配置指令介绍
2、测试基于basic用户认证的访问控制
第五章 ngx_http_stub_status_module模块实现web化查看nginx状态信息的配置
1、stub_status模块相关配置参数介绍
2、status页面的配置
第六章 ngx_http_referer_module模块实现基于引用的访问控制(防盗链)的配置
1、referer模块相关配置参数介绍
2、定义referer相关示例
第七章 ngx_http_log_module模块实现nginx日志管理的配置
1、log模块相关配置参数介绍
第八章 ngx_http_gzip_module模块实现响应报文压缩传输的配置
1、gzip模块相关配置参数介绍
第九章 ngx_http_ssl_module模块实现nginx支持https协议的配置
1、ssl模块相关配置参数介绍
第十章 ngx_http_rewrite_module模块实现URL重写
1、rewrite模块相关配置参数介绍
2、rewrite示例:
第十一章 ngx_http_fastcgi_module模块实现nginx与PHP的结合
1、fastcgi模块相关配置参数介绍
第十二章 实战一:LNMP部署wordpress
1、环境介绍:
CentOS7.2系统,地址为10.1.32.72
rpm包安装Nginx-1.10版本
yum安装mariadb-server以及php-fpm
2、安装相关程序包
3、按需修改php-fpm配置文件,mariadb配置文件,启动php-fpm和mariadb
4、修改nginx配置文件,启动nginx
在nginx配置文件中http段加入如下配置,新建一个虚拟主机
5、提供wordpress程序包,创建wordpress数据库,授权一个数据库用户,web初始化安装wordpress
第十三章 实战二:LNMP部署phpMyAdmin,并实现https的访问
1、环境说明
基于上个实验的部署的LNMP平台,证件一个基于ssl的虚拟机,然后将phpMyadmin部署在该ssl虚拟机内部
2、利用本机作为私有CA服务器,颁发证书
3、修改nginx配置文件,新建一个https虚拟主机
4、提供phpMyadmin,然后web化安装
原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/54617