Nginx教程(一) Nginx入門教程html
Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like協議下發行。由俄羅斯的程序設計師IgorSysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。linux
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 爲俄羅斯訪問量第二的Rambler.ru 站點開發的,第一個公開版本 0.1.0 發佈於 2004 年 10 月 4 日。其將源代碼以類 BSD 許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
nginx
它已經在衆多流量很大的俄羅斯網站上使用了很長時間,這些網站包括 Yandex、Mail.Ru、 VKontakte,以及 Rambler。據 Netcraft 統計,在 2012 年 8 月份,世界上最繁忙的網站中有 11.48%使用 Nginx 做爲其服務器或者代理服務器。目前互聯網主流公司360、百度、新浪、騰訊、阿里等,目前中國互聯網企業 70%以上公司都在使用 nginx 做爲本身的 web 服務器。Nginx 特色是佔有內存少,併發能力強,事實上 nginx 的併發能力確實在同類型的網頁服務器中表現較好。Nginx 由內核和模塊組成,其中,內核的設計很是微小和簡潔,完成的工做也很是簡單,僅僅經過配置文件將客戶端請求映射到一個 location block(location 是 Nginx配置中的一個指令,用於 URL 匹配),而在這個 location 中所配置的每一個指令將會啓動不一樣的模塊去完成相應的工做。c++
Nginx 相對於 Apache 優勢:
1) 高併發響應性能很是好,官方 Nginx 處理靜態文件併發 5w/s
2) 反向代理性能很是強。(可用於負載均衡)
3) 內存和 cpu 佔用率低。(爲 Apache 的 1/5-1/10)
4) 對後端服務有健康檢查功能。
5) 支持 PHP cgi 方式和 fastcgi 方式。
6) 配置代碼簡潔且容易上手。
web
2. Nginx 工做原理及安裝配置
Nginx 由內核和模塊組成,其中,內核的設計很是微小和簡潔,完成的工做也很是簡單,僅僅經過查找配置文件將客戶端請求映射到一個 location block(location 是 Nginx配置中的一個指令,用於 URL 匹配),而在這個 location 中所配置的每一個指令將會啓動不一樣的模塊去完成相應的工做。
Nginx 的模塊從結構上分爲shell
核心模塊、基礎模塊和第三方模塊:
後端
核心模塊:HTTP 模塊、 EVENT 模塊和 MAIL 模塊
基礎模塊: HTTP Access 模塊、HTTP FastCGI 模塊、HTTP Proxy 模塊和 HTTP Rewrite模塊,
第三方模塊:HTTP Upstream Request Hash 模塊、 Notice 模塊和 HTTP Access Key模塊。瀏覽器
Nginx 的高併發得益於其採用了 epoll 模型,與傳統的服務器程序架構不一樣,epoll 是linux 內核 2.6 之後纔出現的。 Nginx 採用 epoll 模型,異步非阻塞,而 Apache 採用的是select 模型
服務器
Select 特色:select 選擇句柄的時候,是遍歷全部句柄,也就是說句柄有事件響應時,
select 須要遍歷全部句柄才能獲取到哪些句柄有事件通知,所以效率是很是低。架構
epoll 的特色:epoll 對於句柄事件的選擇不是遍歷的,是事件響應的,就是句柄上事
件來就立刻選擇出來,不須要遍歷整個句柄鏈表,所以效率很是高
一、Nginx下載:nginx-1.13.0.tar.gz,下載到:/usr/local/software/
wget http://nginx.org/download/nginx-1.13.0.tar.gz
二、Nginx解壓安裝:
tar -zxvf nginx-1.13.0.tar.gz -C ./
三、Nginx編譯
./configure
報錯
錯誤緣由:缺乏編譯環境,安裝編譯源碼所須要的工具和庫:
執行命令:yum install gcc gcc-c++ ncurses-devel perl
再次編譯:./configure --prefix=/usr/local/nginx
錯誤緣由:缺乏HTTP rewrite module模塊,禁用或者安裝所須要的模塊。咱們選擇安裝模塊:
執行命令:yum install pcre pcre-devel
錯誤緣由:缺乏HTTP zlib類庫,咱們選擇安裝模塊:
執行命令:
yuminstall zlib gzip zlib-devel
4.編譯成功
5.安裝Nginx:
安裝命令:make & make install
一、查看安裝目錄:cd
conf 存放配置文件
html 網頁文件
logs 存放日誌
sbin shell啓動、中止等腳本
二、啓動nginx
查看進程
常見問題:
解決nginx:[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)錯誤:
錯誤緣由:不能綁定80端口,80端口已經被佔用。
三、中止nginx,從新加載配置文件
執行命令:kill –INT進程號
啓動成功:
從新讀取配置文件:
nginx-s reload
四、Nginx信號控制
TERM, INT |
快速中止(殺死進程) |
QUIT |
優雅的關閉進程,即等請求結束後再關閉 |
HUP |
改變配置文件,平滑的重讀配置文件 |
USR1 |
重讀日誌,在日誌按月/日分割時有用 |
USR2 |
平滑的升級 |
WINCH |
優雅關閉舊的進程(配合USR2進行升級) |
5.打開瀏覽器
進去nginx的安裝目錄
進去sbin
經常使用命令
啓動 ./nginx 檢查 nginx.conf配置文件 ./nginx -t 重啓 ./nginx -s reload 中止 ./nginx -s stop
1. 《深刻剖析Nginx》
2. 《實戰Nginx:取代Apache的高性能Web服務器》
3. 《深刻理解Nginx:模塊開發與架構解析》
4. 《深刻理解Nginx:模塊開發與架構解析》
5. 《決戰Nginx技術卷:高性能Web服務器部署與運維》
6. 《決戰Nginx系統卷:高性能Web服務器詳解與運維》
from:http://blog.csdn.net/yuan_xw/article/details/51181282#comments