Nginx正向与反向代理
Nginx 主要用于反向代理與負載均衡
?
什么是代理服務器(Proxy Serve)?
????提供代理服務的電腦系統或其它類型的網絡終端,代替網絡用戶去取得網絡信息。
?
為什么使用代理服務器?
-
提高訪問速度?
????由于目標主機返回的數據會存放在代理服務器的硬盤中,因此下一次客戶再訪問相同的站點數據時,會直接從代理服務器的硬盤中讀取,起到了緩存的作用,尤其對于熱門網站能明顯提高訪問速度。 -
防火墻作用?
????由于所有的客戶機請求都必須通過代理服務器訪問遠程站點,因此可以在代理服務器上設限,過濾掉某些不安全信息。同時正向代理中上網者可以隱藏自己的IP,免受攻擊。 -
突破訪問限制?
????互聯網上有許多開發的代理服務器,客戶機在訪問受限時,可通過不受限的代理服務器訪問目標站點,通俗說,我們使用的FQ瀏覽器就是利用了代理服務器,可以直接訪問外網。
-
?
?
正向代理
???? 正向代理(forward proxy) ,一個位于客戶端和原始服務器之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并制定目標(原始服務器),然后代理向原始服務器轉發請求并將獲得的內容返回給客戶端,客戶端才能使用正向代理。我們平時說的代理就是指正向代理。?
????簡單一點:A向C借錢,由于一些情況不能直接向C借錢,于是A想了一個辦法,他讓B去向C借錢,這樣B就代替A向C借錢,A就得到了C的錢,C并不知道A的存在,B就充當了A的代理人的角色
?
?
?
?
?
反向代理
????反向代理(Reverse Proxy),以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求的客戶端,此時代理服務器對外表現為一個反向代理服務器。?
????理解起來有些抽象,可以這么說:A向B借錢,B沒有拿自己的錢,而是悄悄地向C借錢,拿到錢之后再交給A,A以為是B的錢,他并不知道C的存在。
?
?
?
?
正向代理和反向代理的區別
- 位置不同?
正向代理,架設在客戶機和目標主機之間;?
反向代理,架設在服務器端; - 代理對象不同?
正向代理,代理客戶端,服務端不知道實際發起請求的客戶端;?
反向代理,代理服務端,客戶端不知道實際提供服務的服務端;
?
?
- 備注:正向代理–HTTP代理為多個人提供FQ服務;反向代理–百度外賣為多個商戶提供平臺給某個用戶提供外賣服務。
- 用途不同?
正向代理,為在防火墻內的局域網客戶端提供訪問Internet的途徑;?
反向代理,將防火墻后面的服務器提供給Internet訪問; - 安全性不同?
正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此必須采取安全措施以確保僅為授權的客戶端提供服務;?
反向代理都對外都是透明的,訪問者并不知道自己訪問的是哪一個代理。
正向代理的應用
?
? ? 1. 訪問原來無法訪問的資源?
????2. 用作緩存,加速訪問速度?
????3. 對客戶端訪問授權,上網進行認證?
????4. 代理可以記錄用戶訪問記錄(上網行為管理),對外隱藏用戶信息
?
反向代理的應用
????1. 保護內網安全?
????2. 負載均衡?
????3. 緩存,減少服務器的壓力?
???? ??Nginx作為最近較火的反向代理服務器,安裝在目的主機端,主要用于轉發客戶機請求,后臺有多個http服務器提供服務,nginx的功能就是把請求轉發給后臺的服務器,決定哪臺目標主機來處理當前請求。
?
可以看看? ?https://www.cnblogs.com/Anker/p/6056540.html
文章出自? ?https://blog.csdn.net/zt15732625878/article/details/78941268
?
?
下載Nginx后,解壓如下
?
?
?
nginx.conf? 配置如下
?
1 ########### 每個指令必須有分號結束。################# 2 #user administrator administrators; #配置用戶或者組,默認為nobody nobody。 3 #worker_processes 2; #允許生成的進程數,默認為1 4 #pid /nginx/pid/nginx.pid; #指定nginx進程運行文件存放地址 5 error_log logs/error.log debug; #制定日志路徑,級別。這個設置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg 6 events { 7 accept_mutex on; #設置網路連接序列化,防止驚群現象發生,默認為on 8 multi_accept on; #設置一個進程是否同時接受多個網絡連接,默認為off 9 #use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport 10 worker_connections 1024; #最大連接數,默認為512 11 } 12 http { 13 include mime.types; #文件擴展名與文件類型映射表 14 default_type application/octet-stream; #默認文件類型,默認為text/plain 15 #access_log off; #取消服務日志 16 log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式 17 access_log logs/access.log myFormat; #combined為日志格式的默認值 18 sendfile on; #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。 19 sendfile_max_chunk 100k; #每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。 20 keepalive_timeout 10; #連接超時時間,默認為75s,可以在http,server,location塊。 21 proxy_connect_timeout 5; #nginx服務器與被代理的服務器建立連接的超時時間,默認60秒 22 proxy_intercept_errors on; #如果被代理服務器返回的狀態碼為400或者大于400,設置的error_page配置起作用。默認為off。 23 24 upstream mysvr { 25 server 192.168.3.121:9985; 26 #server 192.168.3.211:80 backup; #熱備 當一臺服務器發生事故時,才啟用第二臺服務器給提供服務 27 } 28 error_page 504 https://www.baidu.com; #錯誤頁 29 30 31 server { 32 keepalive_requests 120; #單連接請求上限次數。 33 listen 10000; #監聽端口 34 server_name 127.0.0.1; #監聽地址 35 location ~*^.+$ { #請求的url過濾,正則匹配,~為區分大小寫,~*為不區分大小寫。 36 #root path; #根目錄 37 #index vv.txt; #設置默認頁 38 proxy_pass http://mysvr; #請求轉向mysvr 定義的服務器列表 39 40 #deny 127.0.0.2; #拒絕的ip 41 #allow 127.0.0.1; #允許的ip 42 } 43 } 44 }?
?IIS中? 127.0.0.1:10000? 不需要設置網點,訪問此網址后? 自動跳轉? ??192.168.3.121:9985
?
?
?
配置詳解可以看看? ?https://www.cnblogs.com/knowledgesea/p/5175711.html? ?和? ??https://blog.csdn.net/kingscoming/article/details/79042874
轉載于:https://www.cnblogs.com/cwmizlp/p/9419354.html
總結
以上是生活随笔為你收集整理的Nginx正向与反向代理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis高级-------2
- 下一篇: Nginx+Fastdfs