代理
所謂代理就是讓別人幫你辦事,將結果反饋給你。
1 ) 正向代理(Proxy)
- 是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。
- 例如:你無法去國外,讓能出國的朋友去國外購買商品後再轉交給你。
- 例如:中國無法訪問google.com, 我們通過代理服務器訪問google,之後代理服務器把結果返回給你
- 再比如:路人甲缺錢想找馬老師借錢,路人甲無法聯繫馬老師但與劉老師比較熟,而劉老師和馬老師比較熟, 路人甲委託劉老師在馬老師那裏借到了錢(馬老師並不知道錢是路人甲借的)
2 ) 反向代理(Reverse Proxy)
- 服務器位於用戶與目標服務器之間,但是對於用戶而言,反向代理服務器就相當於目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源。同時,用戶不需要知道目標服務器的地址,也無須在用戶端作任何設定。反向代理服務器通常可用來作爲Web加速,即使用反向代理作爲Web服務器的前置機來降低網絡和服務器的負載,提高訪問效率。
- 例如:撥打中國電信客服電話10000,每一次爲你服務的客服都可能不是一個人, 我們並不關心他們內部如何運作, 那麼中國電信10000對於你來說就是反向代理了。
- 例如:我們訪問百度,其實百度是由多臺服務器構成的,我們並不知道是哪一臺服務器響應我們的,
www.baidu.com
域名對應的服務器對於我們電腦來說就是反向代理。 - 怎樣讓後端的服務器均衡的提供服務,才能充分利用資源, 這就是我們說的負載均衡技術。
3 ) 兩者區別
- 正向代理代理的對象是客戶端,它隱藏了真實的請求客戶端,服務端不知道真實的客戶端是誰,客戶端請求的服務都被代理服務器代替來請求
- 反向代理代理的對象是服務端,反向代理服務器會幫我們把請求轉發到真實的服務器那裏去。Nginx就是性能非常好的反向代理服務器,用來做負載均衡。
負載均衡
1 ) 概念
- 通過某種負載分擔技術,將外部發送來的請求均勻的分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立第迴應客戶的請求
2 ) 實現
- 硬件負載均衡
- 買一臺相關的設備即可幫我們實現負載均衡
- 代表廠商:F5、NetScaler、Radware、Array
- 劣勢:設備、服務費昂貴,難以擴展功能和容量, 靈活性差
- 軟件負載均衡
- Nginx: 輕量級Web服務器/反向代理服務器
- Ngin特點:工作在網絡的七層之上, 對網絡依賴很小, 併發大性能不凡
- 基於DNS的負載均衡
Nginx的安裝與管理
1 ) 安裝
- $
apt update
- $
apt install -y nginx
- $
nginx -V
查看版本
2 ) 服務管理
- $
service nginx start
- $
service nginx stop
- $
service nginx restart
3 ) 修改配置
- $
nginx -t
修改配置文件後, 用於測試配置文件是否存在問題 - $
nginx -s reload
修改配置文件後,用於重新加載配置文件使之生效
Nginx配置文件的修改
-
修改主配置文件 $
vi /etc/nginx/nginx.conf
user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connctions 1000; } http { gzip on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
user
表示nginx將以什麼用戶身份來運行它的進程,涉及到權限的時候,要針對該用戶進行配置權限worker_processes
表示工作進程數,默認是自動,一般可以根據cpu的核心數來設置這個進程數,特殊情況下也可以設置成cpu核心數的2倍pid
表示 nginx啓動的進程idworker_connctions
表示一個work可以處理多少個併發,如果worker_processes配置了8個,worker_connctions配置成了1000,那麼nginx最大併發數是8000gzip
表示網頁壓縮,默認開啓,不開啓網頁流量會更大access_log
表示成功訪問日誌error_log
表示失敗訪問日誌include
導入其他的配置文件
-
nginx的server的配置 $
vi /etc/nginx/sites-enabled/default
server { listen 80; root /var/www/html; index index.html index.htm; server_name _; location / { try_files $uri $uri/ =404; } }
listen
: nginx監聽的端口,一般是80, 也就是瀏覽器瀏覽網頁的默認端口root
: 指定網站的根目錄在哪裏index
: 表示在瀏覽器中如果沒有輸入要訪問的文件默認去讀取某一個文件server_name
: 表示服務器的名字, 通常會填寫我們的域名try_files
: 表示將url中輸入的uri當做文件來查找, 如果沒有當做目錄來查找,再沒有就返回404
-
注意nginx的每一個配置項都要以
;
結束