[转]用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题
转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的。
来源地址:http://www.itshantou.com/Servers/web/06/10/44219.html
几年前开始在学校的服务器上建网站,那时学校通过一台自制的路由器(用台双网卡的电脑安装linux系统)上网,这样通过linux中的iptables做nat上网,并同时做80口对内网web服务器的端口映射,这台路由的wan网卡可以得到一个外网的ip地址,通过动态域名解析(如花生壳、希网3322.org)可以建自己的对外服务的网站了。类似的方法有很多,比如现在可以用宽带路由器也可以做端口映射。
但是慢慢出现了一个问题,学校的网络应用增加,比如要做多个网站系统,而一台服务器无法应付多个应用,这时需要用多个服务器分别运行多个web服务,这时外网的一个ip只有一个80口,就无法映射多台内网ip的80口。
最初的解决办法是就外网的其它端口如8080映射到另一台服务器,这样就出现
http://www.mydomain.com对应内网服务器1
http://www.mydomain.com:8080对应内网服务器2
这样基本解决问题,但是对于一般的用户(学生和学生家长)往往不能理解这样的域名,经常会出错
后来通过在网上查找资料和向其它网友学习,找到了一种通过apache反向代理来解决这个问题的方法。
下面是我们的方法
我们的想法是:先按原方法建好域名服务两个域名(www.mydomain1.com、www.mydomain2.com)同时解析指向到外网ip上,在路由器上将80口映射到内网的一台安装apache的服务器(ip地址192.168.2.1)上,由这台apache服务器根据域名分别反向代理到内网的其它两台web服务器(一台linux+apache+mysql+php,ip地址192.168.2.100,另一台2003+iis6+asp+access,ip地址192.168.2.101)的80口上。
两台web服务器的设置没有什么特别的,这里不多说了,主要说说这台反向代理的apache服务器
1、准备软件
redhat 9 三张光盘
网上下载apache 2.2.2 安装包
2、安装redhat
3、安装apache
tar -zvxf httpd-2.2.2.tar.gz
cd httpd-2.2.2
./configure --prefix=/usr/local/apache
--enable-proxy
--enable-rewrite
--enable-proxy-http
编绎时启用mod_proxy、mod_rewrite、mod_proxy_http模块
make
make install
4、配置httpd.conf
加入以下内容
## 公共部分
ProxyRequests Off
KeepaLive On
Order deny,allow
Allow from all
##虚拟主机名 192.168.2.1 是本机ip地址
NameVirtualHost 192.168.2.1
## 虚拟主机1
ServerNamewww.mydomain1.com
ProxyPass / http://www.mydomain1.com/
ProxyPassReverse / http://www.mydomain1.com/
## 虚拟主机2
ServerNamewww.mydomain2.com
ProxyPass / http://www.mydomain2.com/
ProxyPassReverse / http://www.mydomain2.com/
##对应的web主机如果是iis6,会经常出现Proxy Error,加入以下两条就可以解决
SetEnvforce-proxy-request-1.0 1
SetEnvproxy-nokeepalive 1
5、修改/etc/hosts
vi /etc/hosts
##插入以下内容,将域名指向内网web服务器的ip地址
192.168.2.100 www.mydomain1.com
192.168.2.101 www.mydomain2.com
6、启动apache服务
/usr/local/apache/bin/apachectl -k start
7、测试服务器效果,如果正常,将以上apache启动命令加入到/etc/rc.d/rd.local中,使其每次启动自动运行。
如果要增加主机,只要做好以下四件事
1、将新域名解析到外网ip
2、在httpd.conf中增加新虚拟主机
3、在/etc/hosts中增加域名的对应内网ip记录
4、建好新的内网web服务器
本人根据此文章的内容进行了具体实践操作,并记录了实践过程,可移步观看http://blog.csdn.net/xiaohui_blog/article/details/17501123
[转]用apache反向代理解决单外网ip对应内网多个web主机的问题的更多相关文章
- Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践
欢迎转载,转载时请保留全文及出处. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践 Apache安装 下载源程序(http://httpd.ap ...
- 外网IP和内网IP的区别
这两天遇到一个bug,折腾的够呛,已经上线的项目,出现了个人登录不上的情况,瞬间整个人都不好了,首先找问题,在本地和测试服务器上都没问题,打包发布到正式环境就出现问题了,刚开始我看不了日志,日志要找别 ...
- 网络基础 外网IP,内网IP,虚拟机的网络设置
外网IP,内网IP的关系 在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册.但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用. 这三个地址 ...
- Android 获取本地外网IP、内网IP、计算机名等信息
一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...
- 外网IP和内网IP区别
外网IP和内网IP区别? 网络结构 如图,假设我们的计算机现在就是设备一,我们想要访问百度.如果我们正使用着校园网,那么首先我们需要先通过校园网的路由器把我们的内网ip转为校园网的外网ip.然后通过这 ...
- 通过外网IP访问内网
外网服务器:外网IP1,内网IP192.168.2.156 内网服务器:内网IP192.168.2.206 通过访问外网服务器8083端口,转发到内网服务器的8083端口. 在外网服务器设置映射规则: ...
- 网络通信分享(二):外网ip和内网ip
一.内网ip包括两类: 1:tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/ ...
- 2017.2.9日总结--外网IP和内网IP
Linux自己不能通过自己的外网访问自己必须通过内网访问自己
- 使用apache反向代理tomacat
起源 在大部分的生产环境中,基本上使用的都是java程序,从而促进了各种应用程序中间件的产生,在这里大概有几种,tomcat作为最著名的开源servlet容器,jboss也是开源的,而且有管理界面,主 ...
随机推荐
- 第1个linux命令——echo
功能:在显示器上显示一段文字,一般起到一个提示的作用. 语法:echo [-ne][字符串] 或 echo [--help][--version] 详细说明:echo会将输入的字符串送往标准 ...
- eclipse中默认的提示键
Alt+/:代码提示 Ctrl+/:注释/取消注释 Ctrl+D:删除光标所在行 Ctrl+K:将光标停留在变量上,按Ctrl+K键可以查找到下一个同样的变量 Shift+Ctrl+K:和Ctrl+K ...
- C++语法报错收集
1. error C2864: "OuterClass::m_outerInt": 只有静态常量整型数据成员才可以在类中初始化 class OuterClass { public: ...
- Ext JS中Button的一般使用
Ext JS中Button按钮的显示,以及按钮的部分事件 一.属性 renderTo:将当前对象所生成的HTML对象存放在指定的对象中 text:得到按钮名称 minWidth:按钮最小宽度 hidd ...
- Lucene学习总结之七:Lucene搜索过程解析
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...
- ruby更换为淘宝的源
我们在使用gem更新的时候,经常会为速度抓狂,其实gem默认的源是https://rubygems.org,比较慢众所周至的原因了. 可以将源更换到国内的taobao源 查看当前有的源 gem sou ...
- 【4】项目结构+基本的Tornado服务
项目地址: Blog 简单的tornado服务分支: simple 项目结构 创建对应的文件夹并测试一个最简单的功能 main.py #!/usr/bin/env python # coding:ut ...
- ASP.NET MVC 4.0 学习2-留言板實現
新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案 2,添加數據庫文件message.mdf Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...
- 数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)的区别是什么? 数据科学(data science)和商业分析(business analytics)之间有什么关系?
本来我以为不需要解释这个问题的,到底数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)有什么区别,但是前几天因为有个学弟问我,我想了想发现我竟然也回答 ...
- 利用raspberry pi搭建typecho笔记(三) typecho nginx sqlite FAQ
前言 这是一个汇总文,用来总结我在整个配置过程中遇到的各种问题.因为我在解决这些问题的过程中发现,typecho被部署在这种需要完全自己配置的平台上的情况是比较少的,相关的资料也比较少,所以我的解决过 ...