1.前言
- 第三方模塊,可讓nginx支持更多的功能
- Nginx是支持熱啓動的,也就是說當咱們修改配置文件後,不用關閉Nginx,就能夠實現讓配置生效
2.反向代理
知識點
- 反向代理(Reverse Proxy) : 以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。
- 簡單來講就是真實的服務器不能直接被外部網絡訪問,因此須要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環境,固然也多是同一臺服務器,端口不一樣而已。
實例
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
3.正向代理
知識點
- 正向代理:一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。
- 當你須要把你的服務器做爲代理服務器的時候,能夠用Nginx來實現正向代理
實例
resolver 114.114.114.114 8.8.8.8;
server {
# resolver是配置正向代理的DNS服務器
resolver_timeout 5s;
# listen 是正向代理的端口
listen 81;
access_log e:wwwrootproxy.access.log;
error_log e:wwwrootproxy.error.log;
location / {
proxy_pass http://$host$request_uri;
}
}
4.負載均衡
知識點
- 負載均衡:分攤到多個操做單元上進行執行
- 負載均衡配置通常都須要同時配置反向代理,經過
反向代理
跳轉到負載均衡
。
- Nginx目前支持自帶3種負載均衡策略,還有2種經常使用的第三方策略。
- Nginx會自動判斷服務器的狀態,若是服務器處於不能訪問(服務器掛了),就不會跳轉到這臺服務器,因此也避免了一臺服務器掛了影響使用的狀況
- 因爲Nginx默認是RR策略(輪詢)
權重
- 指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況。
upstream test {
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
ip_hash
- ip_hash的每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題。
upstream test {
ip_hash;
server localhost:8080;
server localhost:8081;
}
fair(第三方)
- 按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend {
fair;
server localhost:8080;
server localhost:8081;
}
url_hash(第三方)
- 按訪問url的hash結果來分配請求,使每一個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。
- 在upstream中加入hash語句,server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法
upstream backend {
hash $request_uri;
hash_method crc32;
server localhost:8080;
server localhost:8081;
}
實例
upstream test {
server localhost:8080;
server localhost:8081;
}
server {
listen 81;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
5.HTTP服務器
知識點
- Nginx自己也是一個靜態資源的服務器,當只有靜態資源的時候,就可使用Nginx來作服務器
實例
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
root e:wwwroot;
index index.html;
}
}
6.動靜分離
知識點
- 核心思路: 讓動態網站裏的動態網頁根據必定規則把不變的資源和常常變的資源區分開來,動靜資源作好了拆分之後,咱們就能夠根據靜態資源的特色將其作緩存操做
實例
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 ~ .(jsp|do)$ {
proxy_pass http://test;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root e:wwwroot;
}
}