(三)企業部分之lnmp環境的搭建:Nginx

Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由俄羅斯的程序設計師Igor Sysoev爲俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0發佈於2004年10月4日。其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。

Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是佔有內存少,併發能力強。在高併發連接的情況下,Nginx是Apache服務器不錯的替代品。Nginx同時也可以作爲7層負載均衡服務器來使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3萬以上的併發連接數,相當於同等環境下Apache的10倍。

自Nginx 發佈四年來,Nginx 已經因爲它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名了。目前國內各大門戶網站已經部署了Nginx,如京東、新浪、網易、騰訊、淘寶等;國內幾個重要的視頻分享網站也部署了Nginx,如六房間、酷6等。


Nginx工作模式(轉)

Nginx由內核和模塊組成,其中,內核的設計非常微小和簡潔,完成的工作也非常簡單,僅僅通過查找配置文件將客戶端請求映射到一個location block(location是Nginx配置中的一個指令,用於URL匹配),而在這個location中所配置的每個指令將會啓動不同的模塊去完成相應的工作。

Nginx的模塊從結構上分爲核心模塊、基礎模塊和第三方模塊,HTTP模塊、EVENT模塊和MAIL模塊等屬於核心模塊,HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊屬於基本模塊,而HTTP Upstream Request Hash模塊、Notice模塊和HTTP Access Key模塊屬於第三方模塊,用戶根據自己的需要開發的模塊都屬於第三方模塊。正是有了這麼多模塊的支撐,Nginx的功能纔會如此強大。


Nginx的模塊從功能上分爲三類,分別是:

Handlers(處理器模塊)。此類模塊直接處理請求,並進行輸出內容和修改headers信息等操作。handlers處理器模塊一般只能有一個。

Filters (過濾器模塊)。此類模塊主要對其他處理器模塊輸出的內容進行修改操作,最後由Nginx 輸出。

Proxies (代理類模塊)。就是Nginx 的HTTP Upstream 之類的模塊


在工作方式上,Nginx分爲單工作進程和多工作進程兩種模式。

在單工作進程模式下,除主進程外,還有一個工作進程,工作進程是單線程的;

在多工作進程模式下,每個工作進程包含多個線程。

Nginx默認爲單工作進程模式。

Nginx的模塊直接被編譯進Nginx,因此屬於靜態編譯方式。啓動Nginx後,Nginx的模塊被自動加載,不像在Apache一樣,首先將模塊編譯爲一個so文件,然後在配置文件中指定是否進行加載。在解析配置文件時,Nginx的每個模塊都有可能去處理某個請求,但是同一個處理請求只能由一個模塊來完成。

如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以並行運行,而不需要相互等待。


Nginx 通過事件驅動相應多個用戶,使用一個工作線程來響應多個不同的用戶請求 

prework 是一個進程響應一個用戶請求 

worker是一個線程響應一個用戶請求 

 

爲此nginx適合於高併發的場景需求,並且nginx對靜態內容響應較快,但是nginx不支持CGI 

在應用是nginx時,nginx主要是工作在web的前端,實現反向代理 


LNMP環境的搭建——Nginx

1.Nginx安裝

所需軟件包:nginx-1.8.0.tar.gz  

tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
yum install pcre-devel  openssl-devel  -y
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
make
make install
vim /root/.bash_profile

wKiom1de8Ivxw8IXAAAWhqxoR6o658.png


source /root/.bash_profile
cd /usr/local/lnmp/nginx/sbin/
./nginx -t    ##檢測
./nginx    ##服務開啓腳本
curl -I localhost    ##檢測http協議提供程序


wKioL1ddhFyy5JzYAACE8tJW_OM069.png

 

##開機啓動##

vim /etc/rc.local

在最後加上nginx

wKioL1dxHbXxDJteAACGOdAjAa4024.png


nginx -s
nginx -h


2.屏蔽nginx版本

rm  -rf  /root/nginx-1.8.0  /usr/local/lnmp/nginx
tar zxf nginx-1.8.0.tar.gz    ##重新解壓nginx源碼包
vim /root/nginx-1.8.0/src/core/nginx.h    ##僞裝版本

將“nginx/”後面部分刪除

wKiom1ddg77A-eGzAAAg9Ktyyz0879.png

 

vim /root/nginx-1.8.0/auto/cc/gcc    ##關閉debug調式

將debug部分註釋掉

wKiom1ddg-7CA67LAAAMH9dGgEc841.png

 

cd nginx-1.8.0
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
make
make install

nginx -t     ##檢測nginx配置
nginx -s reload     ##加載配置


wKioL1ddhTKwWsMEAACB-6GGaVU912.png

 

useradd -s /sbin/nologin -d /usr/local/lnmp/nginx nginx
vim /usr/local/lnmp/nginx/conf/nginx.conf
user  nginx nginx;    ##用戶和組,可以只寫用戶
worker_processes  2;    ##cpu個數,不能超過lscup
events {
        use epoll;    ##nginx epoll 採用異步非阻塞模式 apache --select 同步阻塞機制 io複用模型類型
        worker_connections  4096;    ##連接數
}

 

wKioL1ddhZWi9ffAAABWa7TR-nk485.png

 

3.開啓https

server這一段註釋去掉,cert.key改爲cert.pem(注意要在{}內)

wKiom1ddhFGDhX_vAABO7GtHmmM140.png


cd /etc/pki/tls/certs/
make cert.pem


wKiom1ddhOqy2WcnAABwe7ma91w862.png


cp cert.pem /usr/local/lnmp/nginx/conf/
nginx -t
nginx -s reload


wKiom1ddhQ3if5tTAACSs3bKYGI345.png

 

 

4.nginx 監控小插件

vim /usr/local/lnmp/nginx/conf/nginx.conf

增加以下內容(##/status 名字自定義):

wKioL1ddhlWy9H0_AAANdVZI8_A849.png


nginx -t
nginx -s reload


訪問 ip/status

wKiom1ddhWGgSQqlAAAyBd91T4o896.png

 

5.nginx 虛擬主機

/usr/local/lnmp/nginx/conf/nginx.conf最後加上以下部分(注意後面“}”):

wKioL1ddhpnADm6FAAA9FIQV2Qo287.png


mkdir /web{1..2}
echo www.linux.org > /web1/index.html
echo www.unix.org > /web2/index.html
nginx -t
nginx -s reload


wKioL1ddhyPytSmcAAAlWkRJcoE535.png

wKiom1ddhhbxXUV7AAAmbgXttMo071.png

 

6.nginx 負載均衡套件

server2server3做以下工作:

yum install httpd -y
cd /var/www/html/
echo server2/3.example.com > index.html

/usr/local/lnmp/nginx/conf/nginx.conf最後加上以下部分(注意後面那個括號):

wKiom1ddha7R0drUAAA8LlvkfB0367.png


 wKioL1ddh1OirihPAAA-ML6aGAA090.png


nginx -t 
nginx -s reload

訪問www.linux.org 測試

wKioL1ddh72wOuKwAABz9DbBLbA599.png

wKiom1ddhrXCketgAAB86u71Hxc855.png

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章