1. 程式人生 > >反向代理解決80端口數量問題

反向代理解決80端口數量問題

反向代理

標題索引


  • 問題原因

  • 解決思路

  • 參數分析

  • 企業案例


問題原因

現如今公網IP地址80端口管理較為嚴格,工信部防止搭建違規違法網站,企業在使用80端口時需向運營商網站備案管理處申請備案,備案流程通過運營商才能放行80端口,在備案時需提供資料如互聯網信息安全保障責任書(負責人簽字)、域名證書復印件、公司三證合一的復印件、網站負責人的生身份等相關資料,另外不同運營商業務業務不同具體鏈路帶寬、IP地址數量和端口的放行都有所不同,如某市某運營商在100M帶寬的鏈路綁定8個公網IP地址,只允許放行一個公網IP地址的80端口,而企業因業務需求需搭建多個站點,IP地址和80端口遠遠無法支持建站的業務需求。

解決思路

主體思路為反向代理實現80端口的短缺問題(需提前與運營商做溝通,多個網站承載在一個公網IP地址之上),反向代理主流開源免費產品Apache和Nginx,從底層工作原理得知(可參考UNIX網絡編程書籍):

Apache在IO多路復用的模型中調用SELECT函數,舉例說明,當http請求進入用戶空間apache進程後,調用system call中的read函數時,apache進程優先會調用SELECT函數代理Apache相關進程或線程詢問內核空間是否完成對磁盤的read,若尚未完成時,周期性的詢問,直到完成後,apahce才會調用receform函數將內核空間執行的結果調入用戶空間進行數據報的封裝。

Nginx在IO多路復用的模型中調用EPOLL函數,舉例說明,當http請求進入用戶空間Nginx進程後,調用system call中的read函數時,Nginx進程優先調用EPOLL函數,EPOLL再次調用epoll_create

intepoll_ctlint epoll_wait函數,三種函數的執行功能為當數據從用戶空間進入內核空間後,EPOLL處於等待期,內核空間完成對磁盤的read後主動通知EPOLL函數read讀取完畢,從而Nginx可以迅速調用receform函數將數據從內核空間調入用戶空間完成數據報的封裝。

對比二者底層工作原理決定采用Nginx產品做反向代理軟件,具體解決業務邏輯拓撲圖如下:

技術分享

圖1-1 反向代理業務邏輯

當用戶通過公網IP地址的80端口進入內網優先調度到方向代理服務器,反向代理服務器接收到http請求報文後,根據請求包頭中的host解析到內網虛擬服務器的web站點,服務器回包時,先轉發到代理服務器,由代理服務器再向客戶端發起響應報文。

策略分析

原理誒只

企業案例

企業

1.通過一個公網IP地址的80端口搭建多個獨立站點,解決當下IP地址80端口不足問題;

2.對部分業務實現緩存業務,緩存時長依據具體業務情況進行設定時間。

邏輯拓撲在業務邏輯拓撲的設計時,結合企業文化實現節約地址的同時也要節約造價費用等的理念,引領環保綠色數據中心從我做起。企業現階段邏輯拓撲如下:

技術分享

圖1-2業務邏輯拓撲圖

配置演示:

依據業務邏輯,政務集群擁有多個站點,因此ngix代理啟用虛擬主機,在虛擬主機中啟用反向代理和緩存相關功能,實現業務邏輯的代理和緩存,具體配置如下:

[ root@centos6 ~ ]#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D2:CC:D9  
          inet addr:192.168.100.137  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed2:ccd9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:342 (342.0 b)  TX bytes:930 (930.0 b)



本文出自 “一步一印,有印為證” 博客,謝絕轉載!

反向代理解決80端口數量問題