反向代理解决80端口数量问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向代理解决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_createintepoll_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代理启用虚拟主机,在虚拟主机中启用反向代理和缓存相关功能,实现业务逻辑的代理和缓存,具体配置如下:

[email protected] ~ ]#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端口数量问题的主要内容,如果未能解决你的问题,请参考以下文章

nginx 80端口代理无效 非80可用

用Nginx反向代理实现多网站共用80端口

apache 80 端口 反向代理 tomcat 8080端口

使用nginx反向代理,一个80端口下,配置多个微信项目

【nginx】如何解决使用nginx作为反向代理端口耗尽问题?

nginx 80端口反向代理多个域名,怎样隐藏端口的