Nginx模塊說明

1、Nginx內置模塊

-–prefix=  #指向安裝目錄 -–sbin-path #指向(執行)程序文件(nginx) -–conf-path= #指向配置文件(nginx.conf) -–error-log-path= #指向錯誤日誌目錄 -–pid-path= #指向pid 文件(nginx.pid) -–lock-path= #指向 lock 文件(nginx.lock)(安裝文件鎖定,防止安裝文件被別人利用,或本身誤操做。) -–user= #指定程序運行時的非特權用戶 -–group= #指定程序運行時的非特權用戶組 -–builddir= #指向編譯目錄 -–with-rtsig_module #啓用 rtsig 模塊支持(實時信號) -–with-select_module #啓用 select 模塊支持(一種輪詢模式,不推薦在高載環境下使用)禁用: –withoutselect_module -–with-poll_module #啓用 poll 模塊支持(功能與 select 相同,與 select 特性相同,爲一種輪詢模式,不推薦在高載環境下使用) -–with-file-aio #啓用 file aio 支持(一種 APL 文件傳輸格式) -–with-ipv6 #啓用 ipv6 支持 -–with-http_ssl_module #啓用ngx_http_ssl_module 支持(使支持 https 請求,需已安裝 openssl) -–with-http_realip_module #啓用 ngx_http_realip_module 支持(這個模塊容許從請求標頭更改客戶端的 IP 地址值,默認爲關) -–with-http_addition_module #啓用 ngx_http_addition_module 支持(做爲一個輸出過濾器,支持不徹底緩衝,分部分響應請求) -–with-http_xslt_module #啓用 ngx_http_xslt_module 支持(過濾轉換 XML 請求) -–with-http_image_filter_module 啓用 ngx_http_image_filter_module 支持(傳輸JPEG/GIF/PNG 圖片的一個過濾器)(默認爲不啓用。 gd 庫要用到) -–with-http_geoip_module #啓用 ngx_http_geoip_module 支持(該模塊建立基於與 MaxMind GeoIP 二進制文件相配的客戶端 IP 地址的 ngx_http_geoip_module 變量) -–with-http_sub_module #啓用 ngx_http_sub_module 支持(容許用一些其餘文本替換 nginx 響應中的一些文本) -–with-http_dav_module #啓用 ngx_http_dav_module 支持(增長 PUT,DELETE,MKCOL:建立集合,COPY 和 MOVE 方法)默認狀況下爲關閉,需編譯開啓 -–with-http_flv_module # 啓用 ngx_http_flv_module 支持(提供尋求內存使用基於時間的偏移量文件) -–with-http_gzip_static_module #啓用 ngx_http_gzip_static_module 支持(在線實時壓縮輸出數據流) -–with-http_random_index_module #啓用 ngx_http_random_index_module 支持(從目錄中隨機挑選一個目錄索 引) -–with-http_secure_link_module #啓用 ngx_http_secure_link_module 支持(計算和檢查要求所需的安全連接網址) –with-http_degradation_module #啓用 ngx_http_degradation_module 支持(容許在內存不足的狀況下返回204 或 444 碼) -–with-http_stub_status_module #啓用 ngx_http_stub_status_module 支持(獲取 nginx 自上次啓動以來的工做狀態) -–without-http_charset_module #禁用 ngx_http_charset_module 支持(從新編碼 web 頁面,但只能是一個方向服務器端到客戶端,而且只有一個字節的編碼能夠被從新編碼) -–without-http_gzip_module #禁用 ngx_http_gzip_module 支持(該模塊同-with-http_gzip_static_module 功能同樣) -–without-http_ssi_module #禁用 ngx_http_ssi_module 支持(該模塊提供了一個在輸入端處理處理服務器包含文件(SSI)的過濾器,目前支持 SSI 命令的列表是不完整的) -–without-http_userid_module #禁用 ngx_http_userid_module 支持(該模塊用來處理用來肯定客戶端後續請求的 cookies) -–without-http_access_module #禁用 ngx_http_access_module 支持(該模塊提供了一個簡單的基於主機的訪問控制。容許/拒絕基於 ip 地址) -–without-http_auth_basic_module #禁用 ngx_http_auth_basic_module(該模塊是可使用用戶名和密碼基於http 基本認證方法來保護你的站點或其部份內容) -–without-http_autoindex_module #禁用 disable ngx_http_autoindex_module 支持(該模塊用於自動生成目錄列表,只在 ngx_http_index_module 模塊未找到索引文件時發出請求。) -–without-http_geo_module #禁用 ngx_http_geo_module 支持(建立一些變量,其值依賴於客戶端的 IP 地址) -–without-http_map_module # 禁用 ngx_http_map_module 支持(使用任意的鍵/值對設置配置變量) -–without-http_split_clients_module #禁用 ngx_http_split_clients_module 支持(該模塊用來基於某些條件劃分用戶。條件如: ip 地址、報頭、 cookies 等等) -–without-http_referer_module #禁用 disable ngx_http_referer_module 支持(該模塊用來過濾請求,拒絕報頭中 Referer 值不正確的請求) -–without-http_rewrite_module #禁用 ngx_http_rewrite_module 支持(該模塊容許使用正則表達式改變 URI,而且根據變量來轉向以及選擇配置。若是在 server 級別設置該選項, 那麼他們將在 location 以前生效。若是在location 還有更進一步的重寫規則, location 部分的規則依然會被執行。若是這個 URI 重寫是由於 location 部分的規則形成的,那麼 location 部分會再次被執行做爲新的 URI。 這個循環會執行 10 次,而後 Nginx 會返回一個 500 錯誤。) -–without-http_proxy_module #禁用 ngx_http_proxy_module 支持(有關代理服務器) -–without-http_fastcgi_module #禁用 ngx_http_fastcgi_module 支持(該模塊容許 Nginx 與 FastCGI 進程交互,並經過傳遞參數來控制 FastCGI 進程工做。 ) FastCGI 一個常駐型的公共網關接口。 -–without-http_uwsgi_module #禁用 ngx_http_uwsgi_module 支持(該模塊用來醫用 uwsgi 協議, uWSGI 服務器相關) -–without-http_scgi_module #禁用 ngx_http_scgi_module 支持(該模塊用來啓用 SCGI 協議支持, SCGI 協議是CGI 協議的替代。它是一種應用程序與 HTTP 服務接口標準。它有些像 FastCGI 但他的設計 更容易實現。) -–without-http_memcached_module #禁用 ngx_http_memcached_module 支持(該模塊用來提供簡單的緩存,以提升系統效率) --without-http_limit_zone_module #禁用 ngx_http_limit_zone_module 支持(該模塊能夠針對條件,進行會話的併發鏈接數控制) -–without-http_limit_req_module #禁用 ngx_http_limit_req_module 支持(該模塊容許你對於一個地址進行請求數量的限制用一個給定的 session 或一個特定的事件) -–without-http_empty_gif_module #禁用 ngx_http_empty_gif_module 支持(該模塊在內存中常駐了一個 1*1 的透明 GIF 圖像,能夠被很是快速的調用) -–without-http_browser_module #禁用 ngx_http_browser_module 支持(該模塊用來建立依賴於請求報頭的值。若是瀏覽器爲 modern ,則$modern_browser 等於 modern_browser_value 指令分配的值;如 果瀏覽器爲 old,則$ancient_browser 等於 ancient_browser_value 指令分配的值;若是瀏覽器爲 MSIE 中的任意版本,則 $msie 等於 1) -–without-http_upstream_ip_hash_module #禁用 ngx_http_upstream_ip_hash_module 支持(該模塊用於簡單的負載均衡) -–with-http_perl_module #啓用 ngx_http_perl_module 支持(該模塊使 nginx 能夠直接使用 perl 或經過 ssi 調用 perl) -–with-perl_modules_path= #設定 perl 模塊路徑 -–with-perl= #設定 perl 庫文件路徑 -–http-log-path= #設定 access log 路徑 -–http-client-body-temp-path= #設定 http 客戶端請求臨時文件路徑 -–http-proxy-temp-path= #設定 http 代理臨時文件路徑 -–http-fastcgi-temp-path= #設定 http fastcgi 臨時文件路徑 -–http-uwsgi-temp-path= #設定 http uwsgi 臨時文件路徑 -–http-scgi-temp-path= #設定 http scgi 臨時文件路徑 --without-http #禁用 http server 功能 -–without-http-cache #禁用 http cache 功能 -–with-mail #啓用 POP3/IMAP4/SMTP 代理模塊支持 -–with-mail_ssl_module #啓用 ngx_mail_ssl_module 支持 -–without-mail_pop3_module #禁用 pop3 協議(POP3 即郵局協議的第 3 個版本,它是規定我的計算機如何鏈接到互聯網上的郵件服務器進行收發郵件的協議。是因特網電子郵件的第一個離線協議標 準,POP3 協議容許用戶從服務器上把郵件存儲到本地主機上,同時根據客戶端的操做刪除或保存在郵件服務器上的郵件。 POP3 協議是 TCP/IP 協議族中的一員,主要用於 支持使用客戶端遠程管理在服務器上的電子郵件) -–without-mail_imap_module #禁用 imap 協議(一種郵件獲取協議。它的主要做用是郵件客戶端能夠經過這種協議從郵件服務器上獲取郵件的信息,下載郵件等。 IMAP 協議運行在 TCP/IP 協議之上, 使用的端口是 143。它與POP3 協議的主要區別是用戶能夠不用把全部的郵件所有下載,能夠經過客戶端直接對服務器上的郵件進行操做。) -–without-mail_smtp_module #禁用 smtp 協議(SMTP 即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。 SMTP 協議屬於 TCP/IP 協議族,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。) -–with-google_perftools_module #啓用 ngx_google_perftools_module 支持(調試用,剖析程序性能瓶頸) -–with-cpp_test_module # 啓用 ngx_cpp_test_module 支持 -–add-module= #啓用外部模塊支持 -–with-cc= #指向 C 編譯器路徑 -–with-cpp= #指向 C 預處理路徑 -–with-cc-opt= #設置 C 編譯器參數(PCRE 庫,須要指定–with-cc-opt=」 -I /usr/local/include」,若是使用select()函數則須要同時增長文件描述符數量,能夠經過–with-cc- opt=」 -D FD_SETSIZE=2048」指定。) -–with-ld-opt= #設置鏈接文件參數。(PCRE 庫,須要指定–with-ld-opt=」 -L /usr/local/lib」。) -–with-cpu-opt= #指定編譯的 CPU,可用的值爲: pentium, pentiumpro, pentium3, pentium4, athlon,opteron, amd64, sparc32, sparc64, ppc64 -–without-pcre #禁用 pcre 庫 -–with-pcre #啓用 pcre 庫 -–with-pcre= #指向 pcre 庫文件目錄 -–with-pcre-opt= #在編譯時爲 pcre 庫設置附加參數 -–with-md5= #指向 md5 庫文件目錄(消息摘要算法第五版,用以提供消息的完整性保護) -–with-md5-opt= #在編譯時爲 md5 庫設置附加參數 -–with-md5-asm #使用 md5 彙編源 -–with-sha1= #指向 sha1 庫目錄(數字簽名算法,主要用於數字簽名) -–with-sha1-opt= #在編譯時爲 sha1 庫設置附加參數 -–with-sha1-asm #使用 sha1 彙編源 -–with-zlib= #指向 zlib 庫目錄 -–with-zlib-opt= #在編譯時爲 zlib 設置附加參數 -–with-zlib-asm= #爲指定的 CPU 使用 zlib 彙編源進行優化, CPU 類型爲 pentium, pentiumpro -–with-libatomic #爲原子內存的更新操做的實現提供一個架構 -–with-libatomic= #指向 libatomic_ops 安裝目錄 -–with-openssl= #指向 openssl 安裝目錄 -–with-openssl-opt #在編譯時爲 openssl 設置附加參數 -–with-debug #啓用 debug 日誌

2、Nginx編譯添加新模塊

1.簡介與思路

當前適用於nginx已經在安裝過了,若是沒安裝過,直接在編譯時候添加模塊便可。html

Nginx主要程序就是nginx這個二進制腳本,只要在編譯一個nginx腳本替換掉原來的便可。當前操做是添加echo這個模塊。前端

2.環境準備

系統:centos7.3一臺
軟件版本:1.8.0
部署目錄:/usr/local/nginxpython

3.安裝

1.echo模塊能夠輸出文字,下載解壓便可
wget https://github.com/openresty/echo-nginx-module/archive/v0.60.tar.gz
tar xf v0.60.tar.gznginx

創建一個模塊倉庫,由於添加模塊後,那個文件夾要位置固定,不能刪除的
mkdir /usr/local/nginx/module
mv echo-nginx-module-0.60 /usr/local/nginx/module/git

2.查詢當前nginx編譯模塊
nginx -Vgithub

3.找到nginx源碼包目錄,將原來的都填寫上,最後–add-module是添加模塊,指定模塊文件夾位置便可
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add-module=/usr/local/nginx/module/echo-nginx-module-0.60/web

4.編譯,不要install,否則覆蓋了,注意看狀態,最後沒有error就好了
make正則表達式

5.替換
make後將在當前nginx源碼文件夾下有個objs文件夾,裏面有個nginx這個文件,這個就是nginx -V時用的命令
備份命令
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak算法

替換掉
cp objs/nginx /usr/local/nginx/sbin後端

4.使用驗證

進到腳本目錄
cd /usr/local/nginx/sbin

檢查配置文件是否顯示ok
nginx -t

從新加載
nginx -s reload

檢查是否編譯進去,和原來的作對比。
nginx -V

3、YUM安裝Nginx添加模塊

找一個同版本的nginx源碼包

記錄好原先yum安裝的nginx都有哪些模塊 nginx -V查看

而後將同版本nginx源碼包進行編譯
./configure –以前nginx -V查看的參數 添加你須要新加入的參數 –prefix=/tmp/nginx或者一個臨時目錄
make
make install

將/tmp/nginx/bin/nginx 複製出來

將/usr/bin/nginx 進行備份或者直接mv

而後將/tmp/nginx/bin/nginx 複製到/usr/bin下面

如今nginx -V 就是正確的了。

4、Nginx外置模塊

1、監控模塊 stub_status

1.介紹

Nginx中的stub_status模塊主要用於查看Nginx的一些狀態信息.
當前默認在nginx的源碼文件中,不須要單獨下載

2.使用

本模塊默認是不會編譯進Nginx的,若是你要使用該模塊,則要在編譯安裝Nginx時指定:
./configure –-with-http_stub_status_module

在server板塊中添加一個location,訪問127.0.0.1/nginx-status將會出現狀態信息,裏面記錄nginx處理連接數等等

#放在某個開放的server區塊,填寫一個location server{ location /nginx-status { allow -------- #容許的ip,否則都能看了,通常容許本地 deny all; #默認最後全拒絕,除了allow的 stub_status on; access_log off; } }

3.參數

而後請求www.domain.com/nginx-status 就好了,下面是結果

Active connections: 5 server accepts handled requests 5970806143 5970806143 7560482010 Reading: 0 Writing: 5 Waiting: 0
Active connections: 對後端發起的活動鏈接數. Server accepts handled requests: Nginx總共處理了38810620個鏈接,成功建立38810620次握手(證實中間沒有失敗的),總共處理了298655730個請求. Reading: Nginx 讀取到客戶端的Header信息數. Writing: Nginx 返回給客戶端的Header信息數. Waiting: 開啓keep-alive的狀況下,這個值等於 active – (reading + writing),意思就是Nginx已經處理完成,正在等候下一次請求指令的駐留鏈接. 因此,在訪問效率高,請求很快被處理完畢的狀況下,Waiting數比較可能是正常的.若是reading +writing數較多,則說明併發訪問量很是大,正在處理過程當中.

2、健康檢查模塊 nginx_upstream_check_module

1.介紹

官網
你們都知道,前端nginx作反代,若是後端服務器宕掉的話,nginx是不能把這臺realserver剔除upstream的,因此還會有請求轉發到後端的這臺realserver上面去,雖然nginx能夠在localtion中啓用proxy_next_upstream來解決返回給用戶的錯誤頁面,但這個仍是會把請求轉發給這臺服務器的,而後再轉發給別的服務器,這樣就浪費了一次轉發,此次藉助與淘寶技術團隊開發的nginx模快nginx_upstream_check_module來檢測後方realserver的健康狀態,若是後端服務器不可用,則因此的請求不轉發到這臺服務器

2.使用

1.下載,當前下載0.3版本
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz
--add-module=/xxx

2.添加
在http區塊添加

upstream web_pool { server 192.168.1.11:8080; server 192.168.1.12:8080; }

在server區塊添加

server {
    listen 80; server_name xx; location / { proxy_pass http://web_pool; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /status { #能夠圖形查詢到節點狀態和一些信息 check_status; #訪問http://xxxx/status能夠查詢 access_log off; #allow all; #deny all; }

3.參數

1.upstream

upstream web_pool { zone test_pool 64k; server 192.168.1.11:8080; server 192.168.1.12:8080; check interval=3000 rise=2 fall=3 timeout=3000 type=http; #interval檢測間隔時間,默認毫秒,當前3秒 #rise表示請求2次,正常認爲節點正常 #fall表示請求失敗3次,則認爲節點失敗 #timout超時時間,默認毫秒,當前3秒 #type,類型,當前http類型 check_http_send "GET /status.html HTTP/1.0\r\n\r\n"; check_http_expect_alive http_2xx http_3xx; #分發節點輪詢檢測後端節點的url/status.html ,若是返回2xx或者3xx認爲正常,不然認爲失敗一次 }

3、輸出模塊_echo

1.簡介

官網
Nginx-echo能夠在Nginx中用來輸出一些信息,是在測試排錯過程當中一個比較好的工具。它也能夠作到把來自不一樣連接地址的信息進行一個彙總輸出。總之能用起來能夠給開發人員帶來挺大幫助的。下面看看咱們如何去安裝使用它。

2.使用

1.下載,這裏下載0.56版本
wget https://github.com/openresty/echo-nginx-module/archive/v0.56.tar.gz
--add-module=/xxx

2.在location板塊添加

location / { echo 「撒大大」; }

相關文章
相關標籤/搜索