一、Nginx概述
1.Nginx簡介
辦理基于歷程模子發生的C10k問題,請求時縱然無狀態毗連如web處事都無法到達并發響應量級一萬近況。2006年俄羅斯編寫。全稱為engine X,縮減歸并稱為nginx。 官方站點:http://nginx.org/。 2013年發出企業版Nginx Plus
二次刊行版:tengine, OpenResty… …
2.Nginx的特性
1) 模塊化設計、較好擴展性;早期不支持模塊的動態裝卸載
2) 高靠得住性:基于master/worker模式
master:認真啟動處事,闡明設置文件,父子啟動子歷程和worker歷程
worker:真正響應用戶請求歷程
3) 支持熱陳設(滑膩遷移):不斷機更新設置文件、改換日志、更新處事器措施版本;
4) 內存耗損低:10000個keep-alive毗連模式下的非勾當毗連僅耗損2.5M內存;
5) 支持event-driven事件驅動模子, aio一步驅念頭制, mmap內存映射;
3.Nginx根基成果
2) http協議的反向署理處事器;
3) pop3, smpt,imap4等郵件協議的反向署理;
4) 能緩存打開的文件(元數據:文件的描寫符等等信息)
5) 支持FastCGI(php-fpm), uWSGI(Python WebFramwork)等協議機制,實現署理后端應用措施交互
6) 高度模塊化(非DSO機制)
模塊范例:
core module |
焦點公用模塊 |
Standard HTTP modules |
尺度(焦點)HTTP模塊;自動編譯進措施不止一個 |
Optional HTTP modules |
可選HTTP模塊 |
Mail modules |
郵件模塊 |
3rd party modules |
第三方模塊,在編譯時需手動指明加載方法加載 |
7) 支持過濾器,譬喻zip,SSI
8) 支持SSL加密機制;
9) web處事相關的成果:虛擬主機(server)、keepalive、會見日志(支持基于日志緩沖提高其機能)、urlrewirte、路徑別名、基于IP及用戶的會見節制、支持速率限制及并發數限制;
……
4.Nginx的根基架構:master/worker
master/worker模子:一個master歷程可生成一個或多個worker歷程;每個worker基于時間驅念頭制可以并行響應多個請求
master:加載設置文件、打點worker歷程、滑膩進級,...
worker:http處事,http署理,日本游戲代理 歐洲服務器,fastcgi署理,...
事件驅動:epoll(Linux),kqueue(FreeBSD), /dev/poll(Solaris)
動靜通知:select,poll, rt signals
支持sendfile, sendfile64
支持AIO,mmap
二、Nginx編譯安裝設置
1.編譯安裝nginx
(1)編譯情況籌備
[[email protected]~]# yum install -y make
[[email protected]~]# yum install -y gcc
[[email protected]~]# yum -y groupinstall "開拓東西""處事器平臺開拓"
[[email protected]~]# yum install -y pcre-devel openssl-develzlib-devel
[[email protected]~]# useradd -r nginx
(2)解壓安裝
[[email protected]~]# tar xf nginx-1.8.0.tar.gz
[[email protected]]# ./configure --prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid--lock-path=/var/lock/nginx.lock --with-http_ssl_module--with-http_stub_status_module --with-http_gzip_static_module --with-debug
留意:check時,在Linux上epoll機制要存在
[[email protected]]#make &&make install
(3)啟動處事,檢測端口是否啟用
[[email protected]~]# /usr/local/nginx/sbin/nginx
[[email protected]~]# ss-tnl
2.Nginx設置文件
(1)設置指令有范例
1) 全局指令:安排于mainblock中,即文檔根
main設置段種別:正常運行必備的設置;優化機能相關的設置;用于調試、定位問題的設置;