搭建nginx反向代理用做内网域名转发

作者:@ouyang 发布时间:2015年07月21日 阅读: 3,813 分类:技术相关

本文转载自:  搭建nginx反向代理用做内网域名转发 http://blog.csdn.net/tham_/article/details/45973787

在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难、一一对应关系也没有规律、访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下:

Public IP Public Port Number Internal IP Internal Port Number Note
1.1.1.1

80

192.168.1.10

80

service A
1.1.1.1

81

192.168.1.11

80

service B
1.1.1.1

8080

192.168.1.25

80

service C
1.1.1.1

443

192.168.1.26

443

service D
1.1.1.1

444

192.168.1.35

443

service E

在需要对外开放的服务很多的情况下,NAT的方式虽然难用、难记,但至少还是能够满足需求的(可用端口要小于65535个),但如果A、B、C服务都想(或者必须)使用默认的80、443端口的话,在只有一个公网IP的情况下是没法满足的,如果能有一种如下的实现方式,那就完美了:

Domain Name Public IP Public Port Number Internal IP Internal Port Number Note
A.example.com 1.1.1.1 80 192.168.1.10 80 service A
B.example.com 1.1.1.1 80 192.168.1.11 80 service B
C.example.com 1.1.1.1 80 192.168.1.25 80 service C
D.example.com 1.1.1.1 443 192.168.1.26 443 service D
E.example.com 1.1.1.1 443 192.168.1.35 443 service E

 

首先来分析一下,传统NAT的话肯定是实现不了,因为NAT是3层ip加4层端口的方式做映射,而域名(如http header中)都属于7层的内容,要实现的话只能借助支持7层http协议解析的工具实现,经过一番研究发现反向代理可以实现,那太好了,反响代理的工具一大堆:squid、apache、nginx、haproxy、mysql proxy等等,本文仅讲基于http、https协议的实现,其他协议暂不讨论。

有了工具的支持,接下来就得考虑考虑如何部署的问题:

(1)域名解析到路由器的公网ip-->在路由器(pfsense)上安装squid-->配置反向代理(开启http、https反向代理、主机映射、域名正则匹配转发)-->成功实现(需要路由器支持);

(2)域名解析到路由器的公网ip-->在路由器上做传统NAT,将80、443端口分别指向反向代理服务器-->配置反向代理服务器的-->成功实现(通用方法);

WINDOWS 2008Server 配置nginx 反向代理服务器

本案例有用过可行
0、先要在域名官网上面配置域名对应的IP地址,然后要在自己路由器上面将80端口映射到要装nginx服务器的IP地址。
1、从官网上面下载nginx1.6.2   WINDOWS版本的。访问地址http://nginx.org/en/download.html
2、解压缩到C盘根目录下面
3、复制C:\nginx\conf\nginx.conf,保存成一个副本
4、编辑nginx.conf,内容如下

阅读剩余部分...