天天看點

Nginx配置檔案1 nginx基本概念:2 Nginx配置檔案的内容3 配置執行個體

Nginx配置檔案

  • 1 nginx基本概念:
  • 2 Nginx配置檔案的内容
  • 3 配置執行個體
    • 1 反向代理
      • 1)通過通路虛拟機上Nginx伺服器(192.168.1.5) 來通路虛拟機上部署的伺服器(127.0.0.1:8888)
      • 2)通路不同的資源路徑跳轉到不同的伺服器
    • 2 負載均衡
      • 當用戶端發起一個請求時。Nginx可将請求按照一定的規則分發給不同的伺服器進行處理,既可以配置設定給8888端口的伺服器進行處理,也可配置設定給9999端口的伺服器進行處理
      • 負載均衡的政策:

1 nginx基本概念:

Nginx是一個高性能的HTTP與反向代理web伺服器,具有良好的并發事件處理能力。Nginx伺服器接收到用戶端的請求之後,按照一定的規則分發給了後端的業務處理伺服器進行處理。對于用戶端來說,感受不到Nginx的存在,如同通路真正的後端伺服器一樣。

Nginx作用:

1)反向代理:保證内網的安全,通常将反向代理作為公網通路位址,Web伺服器是内網,隐藏了伺服器的真實資訊。

2)負載均衡:按照一定的規則分發用戶端的請求給各個後端伺服器。

3)動靜分離:将用戶端的動态請求與靜态請求分開,主要有兩種方式實作

第一種 将靜态資源放在一個單獨的伺服器上

第二種 将動态檔案與靜态檔案混合在一起釋出,通過Nginx将器分開

4)Nginx的高可用叢集:可設定多個Nginx,比如主從兩個Nginx,帶外提供一個虛拟的IP位址,通過該位址既可以通路到主Nginx又可以通路到從Nginx,當主Nginx挂掉後,可通過從Nginx來繼續通路後端伺服器。可利用keepalived工具來檢測Nginx是否存活

2 Nginx配置檔案的内容

########### 每個指令必須有分号結束。#################
#user administrator administrators;  #配置使用者或者組,預設為nobody nobody。
#worker_processes 2;  #允許生成的程序數,預設為1
#pid /nginx/pid/nginx.pid;   #指定nginx程序運作檔案存放位址
error_log log/error.log debug;  #制定日志路徑,級别。這個設定可以放入全局塊,http塊,server塊,級别以此為:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #設定網路連接配接序列化,防止驚群現象發生,預設為on
    multi_accept on;  #設定一個程序是否同時接受多個網絡連接配接,預設為off
    #use epoll;      #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大連接配接數,預設為512
}
http {
    include       mime.types;   #檔案擴充名與檔案類型映射表
    default_type  application/octet-stream; #預設檔案類型,預設為text/plain
    #access_log off; #取消服務日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式
    access_log log/access.log myFormat;  #combined為日志格式的預設值
    sendfile on;   #允許sendfile方式傳輸檔案,預設為off,可以在http塊,server塊,location塊。
    sendfile_max_chunk 100k;  #每個程序每次調用傳輸數量不能大于設定的值,預設為0,即不設上限。
    keepalive_timeout 65;  #連接配接逾時時間,預設為75s,可以在http,server,location塊。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #熱備
    }
    error_page 404 https://www.baidu.com; #錯誤頁
    server {
        keepalive_requests 120; #單連接配接請求上限次數。
        listen       4545;   #監聽端口
        server_name  127.0.0.1;   #監聽位址       
        location  ~*^.+$ { #請求的url過濾,正則比對,~為區分大小寫,~*為不區分大小寫。
           #root path;  #根目錄
           #index vv.txt;  #設定預設頁
           proxy_pass  http://mysvr;  #請求轉向mysvr 定義的伺服器清單
           deny 127.0.0.1;  #拒絕的ip
           allow 172.18.5.54; #允許的ip           
        } 
    }
}
           

1、全局塊:配置影響nginx全局的指令。一般有運作nginx伺服器的使用者組,nginx程序pid存放路徑,日志存放路徑,配置檔案引入,允許生成worker

process數等。

2、events塊:配置影響nginx伺服器或與使用者的網絡連接配接。有每個程序的最大連接配接數,選取哪種事件驅動模型處理連接配接請求,是否允許同時接受多個網路連接配接,開啟多個網絡連接配接序列化等。

3、http塊:可以嵌套多個server,配置代理,緩存,日志定義等絕大多數功能和第三方子產品的配置。如檔案引入,mime-type定義,日志自定義,是否使用sendfile傳輸檔案,連接配接逾時時間,單連接配接請求數等。

4、server塊:配置虛拟主機的相關參數,一個http中可以有多個server。

5、location塊:配置請求的路由,用于比對URL,以及各種頁面的處理情況。

3 配置執行個體

1 反向代理

1)通過通路虛拟機上Nginx伺服器(192.168.1.5) 來通路虛拟機上部署的伺服器(127.0.0.1:8888)

修改配置檔案中http塊中的server塊

server{
		listen 80;                //http預設端口
		server_name 192.168.1.5;  //本機的位址
		location / {
			root  html;
			proxy_pass http://127.0.0.1:8888;  //要轉發的位址
		}
}

           

2)通路不同的資源路徑跳轉到不同的伺服器

server{
		listen 80;
		server_name 192.168.1.5;  //本機的位址
		location  ~  /edu/{
			proxy_pass http://127.0.0.1:8888;  
			//當通路/edu/  跳轉到本機8888端口的伺服器
		}
		location  ~  /vod/{
			proxy_pass http://127.0.0.1:9999;  
			//當通路/vod/  跳轉到本機9999端口的伺服器
		}
	}
           

2 負載均衡

當用戶端發起一個請求時。Nginx可将請求按照一定的規則分發給不同的伺服器進行處理,既可以配置設定給8888端口的伺服器進行處理,也可配置設定給9999端口的伺服器進行處理

http{
	upstream myserver{   //upstream代表負載均衡
		#ip_hash ;        //該标志為使用ip_hash的方式進行負載均衡處理
		#least_conn;      //将請求轉發給連接配接數較少的後端伺服器
		#fair;           //實作響應時間短的優先配置設定
    	server 192.168.1.5:8888 weight=1;
		server 192.168.1.5:9999 weight=1;
	}
	server{
		listen 80;
		server_name 192.168.1.5;  //本機的位址
		location / {
			proxy_pass http://myserver;  //要轉發的位址
		}
	}	
}
           

負載均衡的政策:

1 輪詢:它是upstream子產品預設的負載均衡預設政策。每個請求會按時間順序逐一配置設定到不同的後端伺服器。如果某個伺服器down掉了,會自動剔除該伺服器。

2 weight權重方式:在輪詢政策的基礎上指定輪詢的幾率。例子中就是輪詢搭配權重的方式,權重越高配置設定到需要處理的請求就越多。

3 ip_hash:指定負載均衡器按照基于用戶端IP的配置設定方式,這個方法確定了相同的用戶端的請求一直發送到相同的伺服器,以保證session會話。這樣每個訪客都固定通路一個後端伺服器,可以解決session不能跨伺服器的問題。

4 least_conn:把請求轉發給連接配接數較少的後端伺服器。此負載均衡政策适合請求處理時間長短不一造成伺服器過載的情況。

5 fair :按照服務端的相應時間來配置設定請求,相應時間段的伺服器優先配置設定。

6 url_hash:按通路url的hash結果來配置設定請求,使每個url定向到同一個後端伺服器,要配合緩存命中來使用。同一個資源多次請求,可能會到達不同的伺服器上,導緻不必要的多次下載下傳,緩存命中率不高,以及一些資源時間的浪費。而使用url_hash,可以使得同一個url(也就是同一個資源請求)會到達同一台伺服器,一旦緩存住了資源,再此收到請求,就可以從緩存中讀取。

繼續閱讀