1. 程式人生 > >nginx-原始碼安裝(李作強)

nginx-原始碼安裝(李作強)

nginx能做靜態和動態的網頁。

nginx 並結合 tomcat 反向代理,動靜分離,負載均衡

動靜分離:動態的放到tomcat裡解析

靜態的放到nginx裡解析

CDN:內容分發網路,靜態的檔案快取在CDN上。

傳統CDN廠商:藍汛,網宿,帝聯,世紀互聯

雲CDN廠商:阿里雲,百度雲,華為雲,京東雲,只要有雲平臺的公司。

nginx的埠:80

配置檔案:nginx.conf

Nginx可以部署在網路上使用FastCGI指令碼、SCGI處理程式、WSGI應用伺服器或Phusion乘客模組的動態HTTP內容,並可作為軟體負載均衡器。

Nginx使用非同步事件驅動的方法來處理請求。Nginx的模組化事件驅動架構可以在高負載下提供更可預測的效能。

Nginx是一款面向效能設計的HTTP伺服器,相較於Apache、lighttpd具有佔有記憶體少,穩定性高等優勢。與舊版本(<=2.2)的Apache不同,Nginx不採用每客戶機一執行緒的設計模型,而是充分使用非同步邏輯從而削減了上下文排程開銷,所以併發服務能力更強。整體採用模組化設計,有豐富的模組庫和第三方模組庫,配置靈活。 在Linux作業系統下,Nginx使用epoll事件模型,得益於此,Nginx在Linux作業系統下效率相當高。同時Nginx在OpenBSD或FreeBSD作業系統上採用類似於epoll的高效事件模型kqueue。

根據Netcraft在2016年11月網路伺服器調查,Nginx被發現是所有“活躍”站點(被調查站點的18.22%)和百萬最繁忙站點(被調查站點的27.83%)中使用次數最多的Web伺服器。根據W3Techs的資料,前100萬個網站中的37.7%,前10萬個網站中的49.7%,以及前10000個網站中的57.0%被使用。 據BuiltWith統計,在全球前10000個網站中,有38.2%的網站使用Nginx。維基百科使用Nginx作為其SSL終止代理。從OpenBSD 5.2版本(2012年11月1日)開始,Nginx成為了OpenBSD基礎系統的一部分,提供了替代Apache 1.3系統的替代方案,但是後來被替換為OpenBSD自己的httpd(8)。

可大量並行處理
Nginx在官方測試的結果中,能夠支援五萬個並行連線,而在實際的運作中,可以支援二萬至四萬個並行連線。

與Apache相比
Nginx 的編寫有一個明確目標就是超越 Apache Web 伺服器的效能。Nginx 提供開箱即用的靜態檔案,使用的記憶體比 Apache 少得多,每秒可以處理大約四倍於 Apache 的請求。低併發下效能與 Apache 相當,有時候還低於,但是在高併發下 Nginx 能保持低資源低消耗高效能。還有高度模組化的設計,模組編寫簡單。配置檔案簡潔。

這種效能提升的代價是降低了靈活性,例如能夠以每個檔案為基礎覆蓋系統範圍的訪問設定( Apache 使用.htaccess 檔案來完成這個工作,而 Nginx 並沒有內建這樣的功能)。以前,向 Nginx 新增第三方模組需要使用靜態連結的模組從原始碼重新編譯應用程式。在版本 1.9.11 中部分地克服了這一點,增加了動態模組載入。但是,模組仍然必須與 Nginx 同時編譯,而不是所有的模組都與這個系統相容——有些需要更老的靜態連結過程。

但是 Apache 的模組多,bug 少,穩定。Apache 的 select 模型在某些情況下比 Nginx 更高效能,據說是在只有幾個檔案的情況下。

Nginx模組
整體採用模組化設計是Nginx的一個重大特點,甚至http伺服器核心功能也是一個模組。舊版本的Nginx的模組是靜態的,新增和刪除模組都要對Nginx進行重新編譯,1.9.11以及更新的版本已經支援動態模組載入。


nginx(編譯安裝):
yum install GeoIP GeoIP-devel gd gd-devel zlib zlib-devel openssl openssl-devel pcre pcre-devel
下載安裝包:
wget http://nginx.org/download/nginx-1.9.15.tar.gz
解壓:
tar zxvf nginx-1.9.15.tar.gz
cd nginx-1.9.15
編譯安裝:
./configure –prefix=/usr/local/nginx-1.9.15 \
–with-poll_module \
–with-http_ssl_module \
–with-http_v2_module \
–with-http_realip_module \
–with-http_addition_module \
–with-http_image_filter_module \
–with-http_geoip_module \
–with-http_sub_module \
–with-http_dav_module \
–with-http_flv_module \
–with-http_mp4_module \
–with-http_gunzip_module \
–with-http_gzip_static_module \
–with-http_auth_request_module \
–with-http_random_index_module \
–with-http_secure_link_module \
–with-http_degradation_module \
–with-http_slice_module \
–with-http_stub_status_module \
–with-stream \
–with-stream_ssl_module \
–with-mail \
–with-mail_ssl_module \
–with-http_ssl_module \
–with-mail_ssl_module \
–with-stream_ssl_module
如果系統自帶的無法安裝可以指定路徑
–with-openssl=/opt/openssl-1.0.1t \
–with-openssl-opt=”enable -tlsext” \
–with-pcre=/opt/pcre-8.38 \
–with-zlib=/opt/zlib-1.2.8
編譯:
make && make install
軟連線,改名字:
ln -s /usr/local/nginx-1.9.15 /usr/local/nginx

啟動:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/webserver/nginx/sbin/nginx -t //檢查配置檔案的正確性
/usr/local/webserver/nginx/sbin/nginx -s reload // 重新載入配置檔案
/usr/local/webserver/nginx/sbin/nginx -s reopen // 重啟 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop // 停止 Nginx

PCRE 作用是讓 Nginx 支援 Rewrite 功能。
下載 PCRE 安裝包,下載地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
下載安裝包:
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
2、解壓安裝包:
tar zxvf pcre-8.35.tar.gz
3、進入安裝包目錄
cd pcre-8.35
4、編譯安裝
./configure
make && make install
5、檢視pcre版本
pcre-config –version