nginx是一個高性能的HTTP服務器,之前我常常在linux系統中配置,主要作反向代理和負載均衡,最近根據業務須要,須要在window中配置反向和負載,下面就介紹一下nginx的安裝與使用php
下載解壓:html
進入nginx文件夾,雙擊nginx.exe便可簡單啓動【命令在最後會貼出來】linux
雙擊後黑窗口閃退,能夠在任務管理器中查看nginx進程nginx
而後在瀏覽器輸入localhostgit
nginx的簡單啓動已經測試經過瀏覽器
注意:根據不一樣的系統可能會出現80端口被佔用的狀況,eg,在win10下,80端口可能被IIS程序佔用,只須要改nginx的默認端口就好了緩存
反向代理:是指以代理服務器來接受Internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器;並將從服務器上獲得的結果返回給Internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。tomcat
正向代理:只用於代理內部網絡對Internet的鏈接請求,客戶機必須指定代理服務器,並將原本要直接發送到Web服務器上的http請求發送到代理服務器中安全
圖解反向代理和正向代理[補充]服務器
正向代理相似一個跳板機,經過跳板機去訪問外部資源
正向代理的用處:
(1)訪問原來沒法訪問的資源,如google
(2) 能夠作緩存,加速訪問資源
(3)對客戶端訪問受權,上網進行認證
(4)代理能夠記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息
反向代理:
反向代理的好處:
保證內網的安全,負載均衡
上面已經簡單介紹反向代理與正向代理的區別,這樣有助於你們理解反向代理的好處,下面就具體介紹一下nginx反向代理的配置
在介紹反向代理以前先給你們說一下動靜分離的問題:
動靜分離的處理也是nginx的一個特色,把靜態文件交給nginx來處理,能夠增長系統的性能,把大批量的靜態文件以nginx的方式去加載,而後去訪問,不用在系統請求中得到,減小與系統交互次數,這也是系統優化的一種方式:
配置文件以下:nginx.conf
而後重啓nginx nginx -s reload便可 驗證以下
上面這是配置動靜分離的步驟,這也是反向代理的一種特殊狀況,下面我來配置一下關於tomcat的反向代理
反向代理的配置文件以下:
驗證以下:
到這,單個server下的配置反向代理已經基本完成,多個server塊下的配置與此相似,在此不在多放截圖,有興趣的能夠本身手動配置一下進行驗證
nginx的負載均衡是nginx的一個亮點,也是核心點,nginx的高併發,服務器的合理請求劃分都是經過負載來直接或者間接實現的,下面我介紹集中負載均衡的實現以及適用場景
負載均衡:把原先一臺服務器的請求分發到不一樣服務器,以實現服務器減壓的目的。(我的理解)
負載均衡創建在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性(百度)
負載均衡的分類:軟件負載均衡和硬件負載均衡 軟件主要包括(nginx,lvs,netscaler) 硬件主要包括F5
下面我簡單配置一下負載均衡的實現:須要至少兩臺tomcat服務器進行模擬。
關於負載均衡的幾種方式參考 http://www.cnblogs.com/huhongy/p/7300118.html
關於nginx的命令,主要有
有dos命令進如nginx的文件夾下
start nginx 啓動nginx 在任務管理器中查看
nginx -s reload 從新加載配置文件使其生效
nginx -s stop 關閉 任務管理器中kill
nginx -s quit 關閉 任務管理器中不kill
其餘命令本身百度
nginx一些常見問題: root和alias的對比區別:
location /h2 { alias d:/newfiber/; index index.php index.html index.htm; autoindex on; } location /maven { root d:/newfiber; index index.php index.html index.htm; autoindex on; } 注意:1>alias 路徑後面必須有 / root 可加可不加 2> alias 訪問的就是alias的指定文件(夾)路徑 root訪問的是組合路徑 路徑+ uri eg: alias : d:/newfiber/; root : d:/newfiber/maven
2 proxy_pass配置說明 主要看proxy_pass http://localhost:8888 | http://localhost:8888/ 最後是否有 /
# 不帶 / location /gitbucket
# proxy_pass http://localhost:8888; ---------> location 的 /gitbucket 做爲一級目錄
# 帶 / localtion /gitbucket
# proxy_pass http://localhost:8888/; --------->location 的 /gitbucket 不做爲一級目錄
location /gitbucket { proxy_pass http://localhost:8888/gitbucket/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }