Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音爲「engine X」,是一個高性能的HTTP和反向代理服務器,同時也是一個 IMAP/POP3/SMTP 代理服務器。Nginx 是由俄羅斯人 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor Sysoev 在創建的項目時,使用基於 BSD 許可。php
Nginx 作爲 HTTP 服務器,有如下幾項基本特性:html
Nginx 專爲性能優化而開發,性能是其最重要的考量,實現上很是注重效率 。它支持內核 Poll 模型,能經受高負載的考驗,有報告代表能支持高達 50,000 個併發鏈接數。
Nginx 具備很高的穩定性。
Nginx 支持熱部署。
Nginx 代碼質量很是高,代碼很規範,手法成熟,模塊擴展也很容易。nginx
HTTP基礎功能:算法
IMAP/POP3 代理服務功能:apache
支持的操做系統:windows
結構與擴展:後端
其餘HTTP功能:api
實驗特性:緩存
perl
aio_read()
/aio_write()
的套接字工做的實驗模塊,僅在 FreeBSD 下。工做目錄說明:要求在Nginx.exe目錄下執行
1.啓動命令
start nginx
Linux下命令: ./nginx
2.重起命令
nginx -s reload
Linux下命令: ./nginx -s reload
3.關閉命令
nginx -s stop
Linux下命令: ./nginx -s stoptomcat
反向代理:用戶訪問服務器,服務器知道客戶信息,客戶不知道服務器信息
正向代理:用戶訪問服務器,服務器不知道客戶信息,客戶知道服務器信息
默認訪問路徑:localhost:80
在conf目錄下nginx.conf
只有一個http協議
#gzip on; #一個服務器,一個server server { #端口通常不改 listen 80; #監聽域名 服務名稱不能重複 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #開啓反向代理 表明所有請求 location / { #root關鍵字 代理的是一個目錄 root html; #index關鍵字 表明默認頁面 index index.html index.htm; }
例如:
server { listen 80; server_name image.jt.com;#域名 location / { root D:/JT-SOFT/images;#本地磁盤位置 } } #必須在協議以內完成
做用:實現本地域名與ip地址的映射
默認路徑:C:\Windows\System32\drivers\etc\hosts
#實現默認80跳轉8091經過image.jt.com直接訪問 server { listen 80; server_name image.jt.com; location / { #發起url請求地址 proxy_pass http://localhost:8091; } }
動態獲取端口號
@RestController public class PortController { @Value("${server.port}") private int port; @RequestMapping("/getport") public String getport(){ return "端口號"+port; }
server{ listen 80; server_name manage.jt.com; location /{ #proxy_pass http://localhost:8091; proxy_pass http://jtwindows; } } #配置tomacat服務器集羣 upstream jtwindows{ server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }
打包項目三次 端口分別是8081,8082,8083
分別都運行到程序上經過域名/getport測試端口是否能實現輪訓
默認是輪訓策略
權重策論:weight數值越高訪問越頻繁數值越低基本不會被訪問:
#配置tomacat服務器集羣 upstream jtwindows{ server 127.0.0.1:8081 weight=50; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
iphash策論
upstream jtwindows{ ip_hash; server 127.0.0.1:8081 weight=50; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
缺點:1.容易形成負載不均
2.若是Ip地址與用戶綁定在一塊兒,若是tomcat服務器宕機,則直接影響用戶 IPhash實用場景:通常進行壓力測試時使用
Nginx支持以下處理鏈接的方法(I/O複用方法),這些方法能夠經過use
指令指定。
--with-select_module
和 --without-select_module
來啓用或禁用這個模塊。--with-poll_module
和 --without-poll_module
來啓用或禁用這個模塊。/proc/sys/kernel/rtsig-max
來增長隊列的大小。但是從Linux內核版本2.6.6-mm2開始, 這個參數就再也不使用了,而且對於每一個進程有一個獨立的信號隊列,這個隊列的大小能夠用 RLIMIT_SIGPENDING 參數調節。當這個隊列過於擁塞,nginx就放棄它而且開始使用 poll
方法來處理鏈接直到恢復正常。1.down屬性
說明:若是服務器宕機,則能夠經過down屬性把服務器宕掉
upstream jtwindows{ #ip_hash; server 127.0.0.1:8081 weight=50 down; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2; }
2.backup屬性
備用機的設定,通常條件下備用機是不幹活的,可是當主機遇忙時,或者宕機是纔會啓用備用機
8081宕機了(down)啓用備用機
upstream jtwindows{ #ip_hash; server 127.0.0.1:8081 weight=50 down; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=2 backup; }
3.tomcat服務器高可用
說明:若是人爲添加down屬性,效率不高,自動檢測服務器是否宕機,若是宕機自動標識爲down
max_fails=1設置最大的失敗次數,若是超過最大次數則標識爲down
fail_timeout=60s 失效的超時時間(60s)
upstream jtwindows { #ip_hash; server localhost:8081 max_fails=1 fail_timeout=60s; server localhost:8082 max_fails=1 fail_timeout=60s; server localhost:8083 max_fails=1 fail_timeout=60s; }
例如: 如URL重寫(rewrite)不工做了或者是unix的路徑(/$PATH)的問題云云...
請仔細閱讀 [NginxDebugging] 而且 逐行 查看錯誤日誌。
若是你沒找到錯誤 打起精神 試着到IRC或郵件列表裏說明一下你碰到的問題。
關於各自的優缺點請使用本身喜歡的搜索引摯查找 ;-)
有人知道嗎?
大致上來講nginx主要用於反向加速代理而不是像squid那樣作爲常規代理服務器。Nginx的最大優點在於高負載狀況下內存和CPU的低消耗。 我不認爲squid能給你帶來比nginx更好的性能。
依照 [NginxImapProxyExample] 開始你的配置. 關於不一樣配置參數的具體信息, 請查看 [NginxMailCoreModule] 頁。
示例2: 使用運行於同一個服務器的 nginx-embedded-perl 模塊做爲 imap/pop代理和認證後端
有人知道不?
目前Nginx使用簡單的輪巡算法,因此沒法作基本連接計數的負載均衡。 這個可能會在未來的版本中有所改變。
基於 太多人詢問下面的問題:
到目前爲止 (2007-Apr-26) 尚未辦法關閉到後端服務器的緩存.