nginx 主要應用場景
1、反向代理
(推薦教程:nginx教程)
反向代理應該是nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的說法:反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。簡單來說就是真實的服務器不能直接被外部網絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環境,當然也可能是同一臺服務器,端口不同而已。
關鍵命令:proxy_pass;如將 localhost 的80端口 轉到 localhost 8080端口
<span style="color: #000000;">server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host:$server_port; }<br/>} </span>
2、負載均衡
負載均衡也是Nginx常用的一個功能,簡單而言就是當有2臺或2臺以上服務器時,根據規則隨機的將請求分發到指定的服務器上處理,負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉到負載均衡。而Nginx目前支持自帶3種負載均衡策略,還有2種常用的第三方策略
關鍵命令:upstream;如將localhost 80端口的請求 均分到 localhost 8080 和 localhost 8081兩個服務上
負載方案:
1)、權重 weight:必須實現Session 共享,否則導致用戶session不同步,導致用戶重新登陸
upstream test { server localhost:8080 weight=9; #請求的 90% 進入到8080服務器 server localhost:8081 weight=1; #請求的 10% 進入到8081服務器 }
2)、ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題
upstream test { ip_hash; server localhost:8080; server localhost:8081; }
3)、fair(第三方):按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream test { fair; server localhost:8080; server localhost:8081; }
4)、url_hash(第三方):問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效
upstream backend { hash $request_uri; hash_method crc32; server localhost:8080; server localhost:8081; }
5)、默認:按照時間一次分配到不同的機器上
upstream test { server localhost:8080; server localhost:8081; } server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } }
3、WEB服務器
Nginx本身也是一個靜態資源的服務器,當只有靜態資源的時候,就可以使用Nginx來做服務器,同時現在也很流行動靜分離,就可以通過Nginx來實現,首先看看Nginx做靜態資源服務器
這樣如果訪問?http://localhost?就會默認訪問到?E://www/data目錄下面的index.html,如果一個網站只是靜態頁面的話,那么就可以通過這種方式來實現部署
關鍵命令:root 當只有靜態資源的時候,就可以使用Nginx來做服務器
server { listen 80; server_name localhost; location / { root e:/www/data; index index.html; } }
4、正向代理? 不支持https
?正向代理,意思是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端才能使用正向代理。當你需要把你的服務器作為代理服務器的時候,可以用Nginx來實現正向代理,但是目前Nginx有一個問題,那么就是不支持HTTPS
5、靜態分離
動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。
upstream?test{?? ???????server?localhost:8080;?? ???????server?localhost:8081;?? ????}?? ????server?{?? ????????listen???????80;?? ????????server_name??localhost;?? ????????location?/?{?? ????????????root???e:/wwwroot;?? ????????????index??index.html;?? ????????}?? ????????#?所有靜態請求都由nginx處理,存放目錄為html?? ????????location?~?.(gif|jpg|jpeg|png|bmp|swf|css|js)$?{?? ????????????root????e:/wwwroot;?? ????????}?? ????????#?所有動態請求都轉發給tomcat處理?? ????????location?~?.(do)$?{?? ????????????proxy_pass??http://test;?? ????????}?? ????????error_page???500?502?503?504??/50x.html;?? ????????location?=?/50x.html?{?? ????????????root???e:/wwwroot;?? ????????}?? ????}