本文转载自:  搭建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,内容如下

- 阅读剩余部分 -

第一:下载puttygen

第二:由于因为putty不支持pem所以,需要用puttygen进行转换,具体过程如下:

1.打开puttygen程序,然后点击load选择.pem文件(弹出默认选择是.ppk,下拉选择全部文件),也就是在pem文件。

2.选择.pem文件,点击打开,弹出一个窗口,直接确认即可。

3.保存私有密匙文件(Save private key),点击"是",选择存放路径即可保存。

第三:用刚保存的ppk文件进入服务器!

1.打开putty程序,在Host Name输入ip地址,在putty左侧,找到Connection —SSH — Auth 然后在本页找到Private key...,点击Browse…, 找到刚才使用puttygen保存的ppk文件!点击open,输入root就能连接到服务器了,密码都不用输了。

有时候因为文字会破格溢出文字,有了overflow以后就安逸多了。并且大多数浏览器都支持该属性。

div
  {
  width:150px;
  height:150px;
  overflow:scroll;
  }

几个参数值
visible 默认值,内容不会修建。
hidden 内容被修剪,其余内容不可见。
scroll 内容被修剪,剩余内容以滚动条形式查看内容。
auto 如内容被修剪,其余以滚动条形式查看内容。
inherit 从父元素继承overflow属性。

参考地址:http://www.w3school.com.cn/jsref/prop_style_overflow.asp

淘宝Tengine很早就有concat,但apache的concat有致命的缺陷可能导致php文件直接被下载(未经测试),所以一直没敢使用。
今天偶然发现国人修改的concatx,所以将其编译进服务器,问题貌似还是有(无法使用?v版本号),但已经非常不错了。
编译apache的concatx模块:

wget http://ajaxs.sinaapp.com/apache/modconcat/mod_concatx.c
ln -s /usr/local/apache/bin/apxs /usr/local/bin/apxs
apxs -c mod_concatx.c

编译安装concatx模块

apxs -iac mod_concatx.c

编译过程中会自动安装在apache模块目录中,并且conf/httpd.conf配置文件也会自动加上concatx的配置信息。
重启httpd

service httpd restart

查看httpd已经加载的模块

httpd -M
//在最后可以看到
concatx_module (shared)

这说明已经安装成功!可以正常使用了!

请求参数需要用两个问号('??')例如:
http://example.com/??style1.css,style2.css,css/style3.css,js/js.js

说明:concatx使用过程中如果当前目录下有index.php或index.html将无法使用。