so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0

          導航

          <2016年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(8)

          隨筆分類(157)

          隨筆檔案(158)

          牛人博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          http代理的那些事

          正向、反向都是A要訪問一些只有C才能訪問到的東西,中間通過C來中介;
          1。區(qū)別:
          正向:A告訴C,我要明確訪問B,C把B上的資源拽回來,返回給A;對B而言,訪問我的是C,壓根不知道A的存在;在A看來,我需要顯示的配置代理服務(wù)器C,要明確告訴C我要訪問的資源是B;
          反向:A告訴C,我要請求一些資源,C知道資源在B上,從B上把資源拽回來返回給A;對B而言,直接訪問我的是C但同時也知道真正的資源請求者是A;在A看來,壓根不知道B的存在,一直以為資源就是在C上;
          總結(jié):正向非常簡單理解,就是委托C幫我訪問,出了事也都是C兜著,C這里僅僅是一個傻傻的替人干活和頂雷的工具,說白了就是A在本地wget拽B的資源不行,但在C上wget是可以拽下來B的資源的(當然這里C也得是一個server進程,因為要偵聽端口等待A來訪問,還要返回結(jié)果給A);干反向代理的C不再是那么簡單的一個工具了,而是一個真正意義上的service,可以綜合考慮A的需求和B的服務(wù)能力來做智能轉(zhuǎn)發(fā),因此會具有負載均衡的能力(當然這里也可以使用最簡化版的C,即:C也只是一股腦的單純的把請求轉(zhuǎn)發(fā)給B,在這種意義上,貌似感覺反向干的還是正向干的事,實則不然,關(guān)鍵在于B,對于正向而言B是一個特定的資源,例如B可以是https://www.zhihu.com/question/19761434,也可以是http://blog.csdn.net/physicsdandan/article/details/45667357;對于反向而言,B只能是一個或幾個特定的服務(wù)地址,例如http://10.138.20.241:8834/,請求都是轉(zhuǎn)給這一個或這幾個特定服務(wù)地址的,當然這個特定服務(wù)地址也有可能又是proxy)
          2。典型應(yīng)用場景:
          正向:翻到墻外去看片;
          反向:把內(nèi)網(wǎng)的資源暴露給外部訪問;
          3。能做代理的軟件:
          a. nginx:正反都可以,但不支持https;
          b. 正向代理支持https的:http://www.oki-osk.jp/esc/python/proxy/TinyHTTPProxy-0.2.1.zip就一個python文件,最簡單易用,已經(jīng)測試過svn可以用它(配置下~/.subversion/servers里的[global]下的http-proxy-host和http-proxy-port就可以了),更多的參見https://www.zhihu.com/question/19871146;
          4。一句話總結(jié):
          都是把http請求進行轉(zhuǎn)發(fā),調(diào)整幾個header字段而已;反向代理主要干內(nèi)網(wǎng)暴露和負載均衡這兩件事;
          最后附上nginx正反向代理的配置模板:
          正向代理:
          server { 
              resolver 8.8.8.8; 
              resolver_timeout 5s; 
              listen 8081; 
              location / { 
                  proxy_pass $scheme://$http_host$request_uri; 
                  proxy_set_header Host $http_host; 
                  proxy_buffers 256 8k; 
                  proxy_max_temp_file_size 0; 
                  proxy_connect_timeout 30; 
                  proxy_cache_valid 200 302 10m; 
                  proxy_cache_valid 301 1h; 
                  proxy_cache_valid any 1m; 
              } 
          }
          反向代理:
          upstream apachephp  {
              server ip:8080;
          }
          server {
              listen 80;
              server_name www.myblog.cn;
              access_log  logs/quancha.access.log  main;
              error_log   logs/quancha.error.log;
              root        html;
              index       index.html index.htm index.php;
              ## send request back to apache ##
              location / {
                  proxy_pass  http://apachephp;
                  #Proxy Settings
                  proxy_redirect             off;
                  proxy_set_header           Host             $host:$server_port;
                  proxy_set_header           X-Real-IP        $remote_addr;
                           proxy_set_header                             REMOTE-HOST           $remote_addr;
                  proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
                  proxy_next_upstream        error timeout invalid_header http_500 http_502 http_503 http_504;
                  proxy_max_temp_file_size   0;
                  proxy_connect_timeout      90;
                  proxy_send_timeout         90;
                  proxy_read_timeout         90;
                  proxy_buffer_size          4k;
                  proxy_buffers              4 32k;
                  proxy_busy_buffers_size    64k;
                  proxy_temp_file_write_size 64k;
              }
          }

          posted on 2016-06-08 16:31 so true 閱讀(275) 評論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 长兴县| 铁岭县| 灌阳县| 沁水县| 勐海县| 阳朔县| 广平县| 阳新县| 阿克苏市| 方山县| 胶南市| 浏阳市| 井研县| 永宁县| 裕民县| 栾城县| 遵化市| 九龙城区| 台南市| 阿瓦提县| 华阴市| 元谋县| 潍坊市| 盐池县| 平阴县| 三河市| 黄平县| 安远县| 玛多县| 武穴市| 都兰县| 依安县| 沙湾县| 平遥县| 会东县| 盈江县| 温宿县| 玛沁县| 凉城县| 榆社县| 张家川|