一.學(xué)習(xí)環(huán)境:系統(tǒng)硬件:CPU > =2Core,內(nèi)存 >=256M
操作系統(tǒng):版本>=7.0,位數(shù) X64
二.環(huán)境調(diào)試確認(rèn)
1,確認(rèn)系統(tǒng)網(wǎng)絡(luò)
2,確認(rèn)yum可用
yum list | grep gcc
兩項(xiàng)安裝
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
一次初始化
cd /opt;mkdir app download logs work backup
3,確認(rèn)關(guān)閉iptables規(guī)則
service firewalld stop
ps -ef | grep firewall
4,確認(rèn)停用seinux
? ? ?一.Nginx的簡(jiǎn)述:Nginx是一個(gè)開源且高性能,可靠的Http中間件,代理服務(wù).
? ? ?二.常見的Http服務(wù):httpd-Apache基金會(huì),IIS-微軟,GWS-Google
? ? ?三.問:為什么選擇Nginx??
? ? 原因一,IO多路復(fù)用epoll多個(gè)描述符的I/O操作? ? ? ? 都能在一個(gè)線程內(nèi)并發(fā)? ? ? 交替地順序完成,這就叫I/O多路復(fù)用,這里的附庸指的是復(fù)用同一個(gè)線程.什? ? ? ?么是epoll IO多路復(fù)用實(shí)現(xiàn)方式select,poll,epoll
select缺點(diǎn):1.能夠監(jiān)視文件描述符的數(shù)量存在最大限制
? ? ? ? ? ? ? ? ? ?2.線形掃描效率低下
epoll模型:1.每當(dāng)FD就緒,采用系統(tǒng)的回調(diào)函數(shù)之間將fd放入,效率更高.
? ? ? ? ? ? ? ? ?2.最大連接無限制
原因二,輕量級(jí) 功能模塊少 代碼模塊化
原因三,CPU親和(affinity)一,為什么需要CPU親和
什么是Cpu親和:是一種把Cpu親和和Nginx工作進(jìn)程綁定方式,把每個(gè)worker進(jìn)程固定在一個(gè)cpu上執(zhí)行,減少切換cpu的cache miss,獲得更好的性能.
原因四,sendfile
一,Nginx快速搭建與基本參數(shù)使用
Mainline version - 開發(fā)版? ?Stable version - 穩(wěn)定版本 Legacy version - 歷史版本
二,基本參數(shù)使用
安裝目錄 編譯參數(shù) nginx基本配置語(yǔ)法
1,安裝目錄講解
cd /etc/yum.repos.d/
vim nginx.repo
yum -y install nginx
nginx -V
yum list | grep nginx
命令: rpm -ql nginx
/etc/logrotate.d/nginx 配置文件
/etc/nginx 目錄
/etc/nginx/nginx.conf 配置文件
/etc/nginx/conf.d? 目錄
/etc/nginx/conf.d/default.conf 默認(rèn)配置目錄
/etc/nginx/fastcgi_params fastcgi配置文件
/etc/nginx/uwsgi_params uwsgi配置文件
/etc/nginx/scgi_params scgi配置文件
/etc/nginx/koi-utf 編碼轉(zhuǎn)換影射轉(zhuǎn)化
/etc/nginx/koi-win 編碼轉(zhuǎn)換影射轉(zhuǎn)化
/etc/nginx/win-utf? 編碼轉(zhuǎn)換影射轉(zhuǎn)化
/etc/nginx/mime.types 設(shè)置http協(xié)議的Content-Type與擴(kuò)展名對(duì)應(yīng)關(guān)系
/usr/lib/sysemd/system/nginx-debug.service?
/usr/lib/sysemd/system/nginx.service
/etc/sysconfig/nginx
/etc/sysconfig/nginx
用于配置出系統(tǒng)守護(hù)進(jìn)程管理器管理方式
/usr/lib64/nginx/modules
/etc/nginx/modules
Nginx模塊目錄
/usr/sbin/nginx
/usr/sbin/nginx-debug
Nginx服務(wù)的啟動(dòng)管理的終端命令
/usr/share/doc/nginx-1.12.0
/usr/share/doc/nginx-1.12.0/COPYRIGHT?
/usr/share/man/man8/nginx.8.gz?
Nginx的手冊(cè)和幫助文件
/var/cache/nginx
Nginx的緩存目錄
/var/log/nginx
Nginx的日志目錄
2,安裝編譯參數(shù)
命令:nginx-V
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock
安裝目的的目錄或路徑
--http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp
執(zhí)行模塊時(shí)卸留,Nginx所保留的臨時(shí)性文件
--user=nginx --group=nginx 設(shè)定Nginx進(jìn)程啟動(dòng)的用戶和組的用戶
--with-cc-opt=parameters 設(shè)置額外的參數(shù)被添加到CFLAGS變量
--with-ld-opt=parameters 設(shè)置附加的參數(shù)疯淫,鏈接系統(tǒng)庫(kù)?
Http請(qǐng)求
request - 包括請(qǐng)求行,請(qǐng)求頭部,請(qǐng)求數(shù)據(jù)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.imooc.com
> Accept: */*
response - 包括狀態(tài)行,消息報(bào)頭,響應(yīng)正文
curl -v http://www.imooc.com >/del/null 類似于瀏覽器查看web請(qǐng)求
2,Nginx日志類型
包括:error.log access_log
log_format
Syntax:log_format name [escape=default|json]string...;
Default:log_format combined "...",
Context:http
2.Nginx的變量
Http請(qǐng)求變量 -arg_PARAMRTER,Http_HEADER,sent_http_HEADER
內(nèi)置變量 - Nginx內(nèi)置的
自定義變量 - 自己定義
Nginx模塊講解
Nginx官方模塊
第三方模塊
--with-http_stub_status_module Nginx的客戶端狀態(tài)
--with-http_stub_status_module配置
Syntax:stub_status;
Default:--
Context:server,location
四,默認(rèn)模塊講解
--with-http_random_index_module 目錄中選擇一個(gè)隨機(jī)主頁(yè)
2,rangdom_index_module
syntax:random_index on | off;
Default:random_index off;
Context:location
--with-http_sub_module HTTP內(nèi)容替換
Syntax : sub_filter string replacement;
Default:--
Context:http,server,location
2.http_sub_module
Syntax: sub_filter_last_modified on|off;
Default:sub_filter_last_modifiied off;
Context:http,server,location
2.http_sub_module
Syntax: sub_filter_once on|off;
Default:sub_filter_once on;
Context:http,server,location
八,Nginx的請(qǐng)求限制
連接頻率限制 - limit_conn_module
請(qǐng)求頻率限制- limit_req_module
Http 1.0 Tcp不能服用
Http 1.1順序性Tcp復(fù)用
Http2.0多路復(fù)用Tcp服用
八始鱼,Http協(xié)議的連接與請(qǐng)求
Http請(qǐng)求建立在一次Tcp連接基礎(chǔ)上
一次Tcp請(qǐng)求至少產(chǎn)生一次Http請(qǐng)求
連接限制
syntax:limit_conn_zone key zone=name:size;
Default:--
context:http
Syntax:limint_conn zone number;
Default:--
Context:http,server,location
八 請(qǐng)求限制
Syntax:limit_req_zone key zone = name:size rate=rate;
Default:--
Context:http
Syntax:limit_req zone=name[burst=number][nodelay];
Default:--
Context:http,server,location
九Nginx的訪問控制
基于IP的訪問控制 http_access_module
Syntax:allow address | CIDR |unix:|all;
Default:--
Context:http,server,location,limit_except
Syntax:deny address | CIDR |unix:|all;
Default:--
Context:http,server,location,limit_except
基于用戶的信任登陸-http_auth_basic_module
http_access_module局限性
http_x_forwarded_for=Client IP,Proxy(1)IP,Proxy(2)IP,....
方法一,采用別的Http頭信息控制訪問,如:Http_X_Forward_For
方法二,結(jié)合geo模塊作
方法三,通過http自定義變量傳遞
http_auth_basic_module
Syntax:auth_basic strint | off;
Default:auth_basic off;
Context:http,server,location,limit_except
Syntax:auth_basic_user_file file;
Default:----
Context:http,server,location,limit_except
http_auth_basic_module局限性
一,用戶信息以來文件方式
二癣缅,操作管理機(jī)械进肯,效率低下
3估灿,解決方案
一,Nginx結(jié)合Lua實(shí)現(xiàn)高效驗(yàn)證
二出爹,Nginx和LDAP打通庄吼,利用nginx-auth-ldap