(推薦教學: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>
負載平衡也是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; } }
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; } }
正向代理,意思是位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理發送一個請求並指定目標(原始伺服器),然後代理程式向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。當你需要把你的伺服器當作代理伺服器的時候,可以用Nginx來實作正向代理,但是目前Nginx有一個問題,那就就是不支援HTTPS
動靜分離是讓動態網站裡的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特徵將其做緩存操作,這就是網站靜態化處理的核心想法。
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; } }
以上是nginx有哪些常見的應用場景的詳細內容。更多資訊請關注PHP中文網其他相關文章!