nginx 學習

應用場景

  • http服務器。Nginx是一個http服務能夠獨立提供http服務。能夠作網頁靜態服務器。
  • 虛擬主機。能夠實如今一臺服務器虛擬出多個網站,例如我的網站使用的虛擬機。
  • 反向代理,負載均衡。當網站的訪問量達到必定程度後,單臺服務器不能知足用戶的請求時,須要用多臺服務器集羣可使用nginx作反向代理。而且多臺服務器能夠平均分擔負載,不會應爲某臺服務器負載高宕機而某臺服務器閒置的狀況。
  • nginz 中也能夠配置安全管理、好比可使用Nginx搭建API接口網關,對每一個接口服務進行攔截。

靜態資源

靜態資源訪問 存放在nginx的html頁面html

虛擬主機配置

  • 基於域名的虛擬主機,經過域名來區分虛擬主機——應用:外部網站
  • 基於端口的虛擬主機,經過端口來區分虛擬主機——應用:公司內部網站,外部網站的管理後臺
  • 基於ip的虛擬主機,幾乎不用

基於域名的虛擬主機

server {
        listen       80;
        server_name  my.tmp.com;
        
        location / {
            root   data/tmp1;
                index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


 server {
        listen       80;
        server_name  you.tmp.com;
                
        location / {
            root   data/tmp2;
                index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

基於端口的虛擬主機

server {
        listen       8080;
        server_name  8080.tmp.com;
        
        location / {
            root   data/tmp1;
                index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


 server {
        listen       8081;
        server_name  8081.tmp.com;
                
        location / {
            root   data/tmp2;
                index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

配置反向代理

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。
反向代理的好處隱藏真實內部ip地址,請求先訪問nginx代理服務器(外網能夠訪問到),在使用nginx服務器轉發到真實服務器中。nginx

server {
        listen       80;
        server_name  proxy.tmp.com;
        
        location / {
            proxy_pass http://127.0.0.1:8090;
            index  index.html index.htm;
        }
    }

負載均衡

Upstream Server 中文翻譯 上游服務器,意思就是負載均衡服務器設置,白話文表示(就是被nginx代理最後真實訪問的服務器)
負載均衡算法:配置多個上游服務器(真實業務邏輯訪問的服務器)的負載均衡機制
失敗重試機制:當上遊服務器(真實業務邏輯訪問的服務器)出現超時或者服務器不存活,是否考慮重試機制(補償機制)
服務器心跳檢測: 當上遊服務器(真實業務邏輯訪問的服務器),監控檢測|心跳檢測
Nginx負載均衡提供上游服務器(真實業務邏輯訪問的服務器),負載均衡、故障轉移、失敗重試、容錯、健康檢查等。
當上遊服務器(真實業務邏輯訪問的服務器)發生故障時,能夠轉移到其餘上游服務器(真實業務邏輯訪問的服務器)。算法

upstream backServer{
        server 127.0.0.1:8090;
        server 127.0.0.1:8091;
    }

 server {
        listen       80;
        server_name  proxy.tmp.com;
        
        location / {
            proxy_pass http://backServer;
            index  index.html index.htm;
        }
    }

}

負載均衡算法

  • 輪詢(默認)
    每一個請求按時間順序逐一分配到不一樣的後端服務,若是後端某臺服務器死機,自動剔除故障系統,使用戶訪問不受影響。
  • weight(輪詢權值)
    weight的值越大分配到的訪問機率越高,主要用於後端每臺服務器性能不均衡的狀況下。或者僅僅爲在主從的狀況下設置不一樣的權值,達到合理有效的地利用主機資源。後端

    upstream  backServer{
        server 127.0.0.1:8080 weight=1;
        server 127.0.0.1:8081 weight=2;
    }
  • ip_hash
    每一個請求按訪問IP的哈希結果分配,使來自同一個IP的訪客固定訪問一臺後端服務器,而且能夠有效解決動態網頁存在的session共享問題。俗稱IP綁定。
    upstream backServer{緩存

    server 127.0.0.1:8080 ;
         server 127.0.0.1:8081 ;
         ip_hash; 
      }
    • fair(第三方)
      比 weight、ip_hash更加智能的負載均衡算法,fair算法能夠根據頁面大小和加載時間長短智能地進行負載均衡,也就是根據後端服務器的響應時間 來分配請求,響應時間短的優先分配。Nginx自己不支持fair,若是須要這種調度算法,則必須安裝upstream_fair模塊。
    • url_hash(第三方)
      按訪問的URL的哈希結果來分配請求,使每一個URL定向到一臺後端服務器,能夠進一步提升後端緩存服務器的效率。Nginx自己不支持url_hash,若是須要這種調度算法,則必須安裝Nginx的hash軟件包。

配置故障轉移

server {
        listen       80;
        server_name  www.tmp.com;
        location / {
            ### 指定上游服務器負載均衡服務器
            proxy_pass http://backServer;
        ###nginx與上游服務器(真實訪問的服務器)超時時間 後端服務器鏈接的超時時間_發起握手等候響應超時時間
            proxy_connect_timeout 1s;
            ###nginx發送給上游服務器(真實訪問的服務器)超時時間
            proxy_send_timeout 1s;
            ### nginx接受上游服務器(真實訪問的服務器)超時時間
            proxy_read_timeout 1s;
            index  index.html index.htm;
        }
    }
相關文章
相關標籤/搜索