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(也就是同一個資源請求)會到達同一台伺服器,一旦緩存住了資源,再此收到請求,就可以從緩存中讀取。