windows下的nginx應用
-
nginx(背景)
nginx是一個高效能的HTTP伺服器,以前我經常在linux系統中配置,主要做反向代理和負載均衡,最近根據業務需要,需要在window中配置反向和負載,下面就介紹一下nginx的安裝與使用
-
nginx介紹
- Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強 併發量在50,000 【官方】
-
nginx的下載和安裝
- 下載:http://nginx.org/en/download.html
- 點進去選擇版本下載即可:如圖
- 下載:http://nginx.org/en/download.html
下載解壓:
進入nginx資料夾,雙擊nginx.exe即可簡單啟動【命令在最後會貼出來】
雙擊後黑視窗閃退,可以在工作管理員中檢視nginx程序
然後在瀏覽器輸入localhost
nginx的簡單啟動已經測試通過
注意:根據不同的系統可能會出現80埠被佔用的情況,eg,在win10下,80埠可能被IIS程式佔用,只需要改nginx的預設埠就行了
-
nginx的反向代理
反向代理:是指以代理伺服器來接受Internet上的連線請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
正向代理:只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中
圖解反向代理和正向代理[補充]
正向代理類似一個跳板機,通過跳板機去訪問外部資源
正向代理的用處:
(1)訪問原來無法訪問的資源,如google
(2) 可以做快取,加速訪問資源
(3)對客戶端訪問授權,上網進行認證
(4)代理可以記錄使用者訪問記錄(上網行為管理),對外隱藏使用者資訊
反向代理:
反向代理的好處:
保證內網的安全,負載均衡
-
nginx的反向代理配置
上面已經簡單介紹反向代理與正向代理的區別,這樣有助於大家理解反向代理的好處,下面就具體介紹一下nginx反向代理的配置
在介紹反向代理之前先給大家說一下動靜分離的問題:
動靜分離的處理也是nginx的一個特點,把靜態檔案交給nginx來處理,可以增加系統的效能,把大批量的靜態檔案以nginx的方式去載入,然後去訪問,不用在系統請求中獲得,減少與系統互動次數,這也是系統優化的一種方式:
配置檔案如下:nginx.conf
然後重啟nginx nginx -s reload即可 驗證如下
上面這是配置動靜分離的步驟,這也是反向代理的一種特殊情況,下面我來配置一下關於tomcat的反向代理
反向代理的配置檔案如下:
驗證如下:
到這,單個server下的配置反向代理已經基本完成,多個server塊下的配置與此類似,在此不在多放截圖,有興趣的可以自己手動配置一下進行驗證
-
nginx的負載均衡
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;proxysetheaderX−Forwarded−Forhost;proxysetheaderX−Forwarded−Forremote_addr;
}
啟動指令碼: 生成bat檔案放入到nginx的安裝目錄下
@echo off rem 如果啟動前已經啟動nginx並記錄下pid檔案,會kill指定程序 nginx.exe -s stop rem 測試配置檔案語法正確性 nginx.exe -t -c conf/nginx.conf rem 顯示版本資訊 nginx.exe -v rem 按照指定配置去啟動nginx nginx.exe -c conf/nginx.conf