概述
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.www58058.com/54617