摘要:客戶端必須要進行一些特別的設置才能使用正向代理。正向代理還可以使用緩沖特性減少網絡使用率。反向代理的典型用途是將防火墻后面的服務器提供給用戶訪問。反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。
一、相關概念
代理一般分為正向代理和反向代理,以下是他們的定義(以下內容引自網上)
正向代理,也就是傳說中的代理,他的工作原理就像一個跳板,簡單的說,我是一個用戶,我訪問不了某網站,但是我能訪問一個代理服務器,這個代理服務器呢,他能訪問那個我不能訪問的網站,于是我先連上代理服務器,告訴他我需要那個無法訪問網站的內容,代理服務器去取回來,然后返回給我。從網站的角度,只在代理服務器來取內容的時候有一次記錄,有時候并不知道是用戶的請求,也隱藏了用戶的資料,這取決于代理告不告訴網站。
結論就是,正向代理 是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。反向代理 例如用戶訪問?http://www.test.com/readme ,但www.test.com上并不存在readme頁面,他是偷偷從另外一臺服務器上取回來,然后作為自己的內容返回用戶,但用戶并不知情。這里所提到的?www.test.com?這個域名對應的服務器就設置了反向代理功能。
結論就是,反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
兩者區別就是:
從用途上講,正向代理的典型用途是為在防火墻內的局域網客戶端提供訪問Internet的途徑。正向代理還可以使用緩沖特性減少網絡使用率。反向代理的典型用途是將防火墻后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多臺服務器提供負載平衡,或為后端較慢的服務器提供緩沖服務。另外,反向代理還可以啟用高級URL策略和管理技術,從而使處于不同web服務器系統的web頁面同時存在于同一個URL空間下。
從安全性講,正向代理允許客戶端通過它訪問任意網站并且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。反向代理對外都是透明的,訪問者并不知道自己訪問的是一個代理。
二、Nginx代理 1.簡單的代理這樣安裝的配置文件位置在/etc/nginx/conf.d。其中有一個默認的配置文件default.conf,內容如下:
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache"s document root # concurs with nginx"s one # #location ~ /.ht { # deny all; #} }
這是一個比較全面的配置文件。且該目錄下所有的.conf文件都會加載的,只要配置不沖突,所有的配置都會生效。
接下來在此目錄新建guo.conf,將此域名訪問代理我的個人博客 www.guoxiaozhong.cn。
具體內容如下:
server { listen 80; server_name 你的域名或者IP; location / { proxy_pass http://www.guoxiaozhong.cn; } }
重新加載配置文件;
[root@localhost conf.d]# service nginx reload Reloading nginx: [ OK ] [root@localhost conf.d]# service nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ]
訪問效果如下:
目前的代理拓撲圖為:
listen:要監聽的端口,我們一般都是監聽80端口,其他端口都封死,防火墻只剩80
server_name:服務器的IP或者綁定的域名
location /:這個是路徑的意思,/這個是代表訪問的路徑,/代表根目錄
proxy_pass指令:
語法:proxyz_pass URL
默認值:no
使用字段:location,location中的if字段
這個指令設置被代理服務器的地址和被映射的URI,地址可以使用主機名或IP加端口號的形式,例如:
proxy_pass http://www.guoxiaozhong.cn;
注意:一定要寫http://
3.分析日志www.guoxiaozhong 博客服務器的日志
Nginx服務器的IP - - [03/Jan/2017:10:49:19 +0800] "GET /2016/11/29/office-2016-for-mac-de-wordmo-ban-wen-jian-jia-wei-zhi/ HTTP/1.0" 200 4112 "設置的代理域名" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:10:49:20 +0800] "GET /content/images/2016/10/logo.jpeg HTTP/1.0" 206 1 "設置的代理域名" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:10:49:20 +0800] "GET /content/images/2016/10/logo.jpeg HTTP/1.0" 206 1778 "設置的代理域名" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:10:49:21 +0800] "GET /assets/images/favicon.png HTTP/1.0" 200 2562 "設置的代理域名" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:53 +0800] "GET / HTTP/1.0" 200 3951 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:53 +0800] "GET /assets/css/vno.css?v=6d7f73f25e HTTP/1.0" 200 4187 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:54 +0800] "GET /assets/css/tomorrow.css?v=6d7f73f25e HTTP/1.0" 200 610 "http://xtrader.spartajet.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:54 +0800] "GET /assets/css/animate.css HTTP/1.0" 200 5066 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:55 +0800] "GET /assets/js/main.js?v=6d7f73f25e HTTP/1.0" 200 662 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" Nginx服務器的IP - - [03/Jan/2017:11:01:55 +0800] "GET /assets/js/highlight.pack.js?v=6d7f73f25e HTTP/1.0" 200 15760 "http://xtrader.spartajet.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-"
可以看到,我的博客服務器上的日志只顯示Nginx的IP和Nginx設置的域名,沒有客戶端的信息。
客戶端IP - - [03/Jan/2017:11:01:55 +0800] "GET /assets/js/highlight.pack.js?v=6d7f73f25e HTTP/1.1" 200 15788 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" 客戶端IP - - [03/Jan/2017:11:01:58 +0800] "GET /content/images/2016/10/logo.jpeg HTTP/1.1" 200 42960 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" 客戶端IP - - [03/Jan/2017:11:02:13 +0800] "GET /content/images/2016/10/e69ef0aa357bd34022b2824daf3b5a33_r-1.jpg HTTP/1.1" 200 176528 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-" 客戶端IP - - [03/Jan/2017:11:02:16 +0800] "GET /assets/images/favicon.png HTTP/1.1" 200 2562 "設置的代理域名" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "-"
代理服務器上的日志顯示客戶端的IP。
4.配置文件顯示客戶端IP配置guo.conf文件:
server { listen 80; server_name 博客代理域名; location / { proxy_pass http://www.guoxiaozhong.cn; proxy_set_header X-real-ip $remote_addr; } }
主要是加上;
proxy_set_header X-real-ip $remote_addr;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39846.html
摘要:確定偵聽通配符地址的套接字是否只接受連接,或者是接受和連接。此參數配置偵聽套接字的行為。某些操作系統支持使用,和套接字選項在每個套接字上設置保持活動參數。可以省略一個或兩個參數,在這種情況下,相應套接字選項的系統默認設置將有效。 Nginx代理TCP主要是使用stream模塊,這個功能是從1.9.0版本開始的。我用它來代理Mysql。 一、配置代碼 stream { upstr...
摘要:一環境準備操作系統位版本二安裝下載解壓新建用戶與組組編譯配置文件安裝重定向支持和支持,如果不需要可以不安裝。 一、環境準備 操作系統:Centos6.4 64位 Nginx版本:1.4.2 二、安裝Nginx 1.下載 [root@localhost nginx]# cd /usr/local/ [root@localhost nginx]# mkdir nginx [root@l...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
摘要:爬蟲是我接觸計算機編程的入門。練練練本文推薦的資源就是以項目練習帶動爬蟲學習,囊括了大部分爬蟲工程師要求的知識點。拓展閱讀一文了解爬蟲與反爬蟲最后,請注意,爬蟲的工作機會相對較少。 爬蟲是我接觸計算機編程的入門。哥當年寫第一行代碼的時候別提有多痛苦。 本文旨在用一篇文章說透爬蟲如何自學可以達到找工作的要求。 爬蟲的學習就是跟著實際項目去學,每個項目會涉及到不同的知識點,項目做多了,自然...
閱讀 982·2023-04-26 01:47
閱讀 1672·2021-11-18 13:19
閱讀 2042·2019-08-30 15:44
閱讀 645·2019-08-30 15:44
閱讀 2291·2019-08-30 15:44
閱讀 1232·2019-08-30 14:06
閱讀 1420·2019-08-30 12:59
閱讀 1900·2019-08-29 12:49