你們好,我是Java最全面試題庫
的提褲姐,今天這篇是分佈式技術的第四篇,主要介紹Nginx;在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更,但願你也能夠跟着百日百刷,一百天養成一個好習慣。html
Nginx是一個web服務器和反向代理服務器,用於HTTP、HTTPS、SMTP、POP3和IMAP協議。web
Nginx服務器的特性包括:面試
Nginx使用反應器模式。主事件循環等待操做系統發出準備事件的信號,這樣數據就能夠從套接字讀取,在該實例中讀取到緩衝區並進行處理。單個線程能夠提供數萬個併發鏈接。安全
只需將請求刪除的服務器就能夠定義爲: Server{listen80; server_name「; return444;}
服務器名被保留爲一個空字符串,它將在沒有「主機」頭字段的狀況下匹配請求,而一個特殊的 Nginx的非標準代碼444被返回,從而終止鏈接。服務器
反向代理服務器能夠隱藏源服務器的存在和特徵。它充當互聯網雲和web服務器之間的中間層。這對於安全方面來講是很好的,特別是當使用web託管服務時。網絡
Nginx服務器的最佳用法是在網絡上部署動態HTP內容,使用SCGI、WSGl應用程序服務器 ,用於腳本的FastCGI處理程序。它還能夠做爲負載均衡器。併發
Master進程:讀取及評估配置和維持
Worker進程:處理請求負載均衡
爲了經過一個不一樣的端口開啓 Nginx,必須進入etc/Nginx/sites- enabled/
,若是這是默認文件,那麼你必須打開名爲default」的文件。編輯文件,並放置在你想要的端口: Like server {listen 81;}
分佈式
502=錯誤網關
503=服務器超載
有可能,可是能夠確保 fastcgi_intercept_errors
被設置爲on,並使用錯誤頁面指令。memcached
Location/fastcgi_pass 127.0.01:9001; fastcgi_intercept_error on; error_page 502 =503/errorpage. html; #...}
要在URL中保留雙斜線,就必須使用 merge_slashes_off
語法: merge_slashes [on/off]
默認值: merge_slashes on
環境 : http,server
ngx_http_upstream_module 用於定義可經過fastcgi傳遞、proxy傳遞、 uwsgi傳遞、 memcached傳遞和scgi傳遞指令來引用的服務器組。
C10K問題是指沒法同時處理大量客戶端(10,000)的網絡套接字。
Stub_status指令:用於瞭解Nginx當前狀態的當前狀態,如當前的活動鏈接,接受和處理當前讀/寫/等待鏈接的總數
Sub_filter指令:用於搜索和替換響應中的內容,並快速修復陳舊的數據
可使用 Nginx模塊 gunzip將請求壓縮到上游。 gunzip模塊是一個過濾器,它能夠對不支持「gzip」編碼方法的客戶機或服務器使用「內容編碼:gzip」來解壓縮響應。
要得到 Nginx的當前時間,必須使用SSl模塊
、$date_gmt
和date_local
的變量。Proxy_set_header THE-TIME $date_gmt;
用於運行 Nginx-s參數的可執行文件。
在編譯過程當中,必須選擇Nginx模塊,由於Nginx不支持模塊的運行時間選擇。