闲谈:

很多站长在购买虚拟主机的时候,会看虚拟主机的一些参数,其中最重要的就是支持的程序语言。现在很多IDC商家都在宣称全能主机。

最好笑的一个事情就是,笔者刚建站的时候,购买了国内一家小主机商(名叫主机屋)的虚拟主机,他们宣传就是全能主机,什么语言都支持。这样的幌子去骗一些菜鸟还可以,对于一个懂技术的,就只能对他们的伎俩投以鄙视的眼光。后来询问之后,才知道他们所谓的全能主机,也就仅仅只支持PHP和ASP同时运行(使用IIS运行PHP),连ASP.net都不支持,对于这事,笔者还和他们理论了半天,现在估计再也不敢宣称全能主机了,这样的商家,希望所有站长都能远离,太没有道德了。

首先说说,什么是全能主机。

所谓的全能主机,就是一台服务器上面同时支持多个不同的应用服务器运行,并且能通过外部独立域名访问的主机。这里的多个,要至少大于等于三个。

因为目前来讲,Apache,IIS,Tomcat是目前被广泛使用的三种Web服务器软件,其中Apache,tomcat是开源软件,不仅用于Unix系统,也有基于Win32平台的版本。

IIS是Windows操作系统自带的组件,也提供了强大的Internet和Intranet服务功能。这三种服务器软件各有特色,IIS对ASP+Access的支持比较好,而Apache是PHP+MySQL平台不二的选择,Tomcat是运行java语言程序的服务器。

对于各自的环境搭建,可以参考《云主机环境搭建教程之IIS配置篇》,《云主机环境搭建教程之PHP配置篇》,以及《云主机环境搭建教程之Java配置篇》。

大家都知道,http只有一个开放端口,就是80端口。外部通过独立域名访问网站的时候,如果不加端口,会默认访问服务器中80端口下面的网站。很现实,这几个应用服务器不可能只用一个端口。如果要访问,则必须通过域名加端口号才能访问,这样显然不利于推广。因此,我们就需要想办法让用户输入简单域名,而我们在后台截获域名,然后动态的解析到不同的端口网站上。

按照这样的思路,笔者想了很多办法,传统的就是重新配置IIS,使其支持PHP+MySQL,或者重新配置Apache使其能支持ASP+Access。但考虑到这两种方法虽然从技术上都能够实现,但配置过程较复杂,不易于推广,不利于初学者使用。况且如果你还搭建了java程序,那就更复杂了。

笔者也没有从事过IDC行业的工作,没有这方面的经验。同时也在思考现在那些全能功能是如何实现的。根据笔者的经验,他们是有一个80端口的服务器做代理分发,将不同的域名分发到不用的应用服务器的网站上。

通过这样的思路,笔者想到了使用Apache的虚拟主机功能和反向代理模块来实现。

什么是Apache虚拟主机。在apache的官方技术网站上是这样定义的。

虚拟主机指的是在单一机器上运行多个网站 (例如 www.company1.comwww.company2.com) 。 虚拟主机可以“基于 IP”,即每个 IP 一个站点; 或者“基于名称”, 即每个 IP 多个站点。这些站点运行在同一物理服务器上的事实不会明显的透漏给最终用户。

Apache 是第一个支持基于 IP 的虚拟主机的服务器。 Apache 版本 1.1 和更新的版本同时支持基于 IP 和基于名称的虚拟主机。 基于名称的虚拟主机有时候称为基于主机非 IP的虚拟主机。

详细地址:http://httpd.apache.org/docs/2.2/vhosts/

注:本文是基于名称的虚拟主机配置。

什么是反向代理。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个web服务器。

那么我们就将Apache服务器做为一个代理web服务器,用它来处理从外部访问过来的任何请求并且返回给外部。

有兴趣的朋友可以了解下什么是正向代理。

名词术语大概介绍完了,那么本文主要通过一个例子来为大家简述配置的具体方法。

前言:

仍然以笔者的www.bxw001.com这个域名为例。这个网站是一个ASP+Access网站,建立在IIS6.0下,端口设置为81。如果不使用反向代理,则用户访问这个网站时,必须使用www.bxw001.com:81 才能正常访问,很麻烦。

通过反向代理设置后,用户仍然使用www.bxw001.com域名网站,但首先会进入到Apache服务器,然后再调转到IIS下的正式网站去。

设置步骤如下:

1、加载Apache的代理模块

打开httpd.conf文件,放开以下几行代码的注释,(将前面的#去掉即可),此时Apache就是一个web代理服务器了。

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

2、建立虚拟主机,进行端口重定向

为需要代理的网站建立一个虚拟主机,在此笔者强烈建议,都通过虚拟主机来单独配置。有些朋友可能直接在httpd.conf文件里修改,这样虽然也能实现,但是所有的访问,包括不是代理域名的访问都会进入被代理的网站去。

因为Apache虚拟主机的加载顺序是按照顺序来加载的,如果访问的url配置了虚拟主机,则进行代理访问,如果没有,默认是以第一个的。

因此,需要引入虚拟主机单独的配置文件,在这里面增加虚拟主机配置。

在httpd.conf文件中找到这行代码,Include conf/extra/httpd-vhosts.conf,去掉#注释。

以下关于虚拟主机的配置都在httpd-vhosts.conf下进行。

默认Apache提供了两个样例,不用管,直接注释掉,或者在原来上面修改也可以。

我们是要将站点www.bxw001.com域名的所有访问转向IIS下面的81端口,先增加一个虚拟主机。代码如下:

<VirtualHost *:80>
   ServerAdmin webmaster@a.com
   DocumentRoot "d:/wwwroot/www.bxw.com"
   ServerName bxw001.com
   ServerAlias www.bxw001.com
   ErrorLog "logs/bxw001.com.log"
   CustomLog "logs/bxw001.com.log" common
   <Directory "d:/wwwroot/www.bxw.com">
    Require all granted  
   </Directory>
  ProxyPass / http://localhost:81/
  ProxyPa***everse / http://localhost:81/
</VirtualHost>

解释:

ServerAdmin:这个就是邮箱,可以默认

DocumentRoot:这个是你被代理的网站的根目录地址。我们这就是IIS6.0下面的ASP网站目录。注意目录斜杠的方向。

ServerName :被代理的域名,这里就是你IIS下ASP网站的独立域名。

ServerAlias:同上,别名,一般可以写成一级或者二级域名。

ErrorLog :日志文件地址和名称。一般以域名作为文件名,方便区分,默认存放在apache的logs目录下。

<Directory > 设置虚拟主机的目录的访问权限。笔者建议权限的设定都在虚拟主机下单独设置,而不是在httpd.conf中统一设置成所有都可以访问,这样不安全。

ProxyPass :这个是关键,表示IIS下面ASP网站的真实访问地址,这里写成localhost,也可以写成域名+端口,这要看你在IIS设置的主机头地址了。如果主机头默认,那么这里就是localhost。

ProxyPa***everse :反向代理地址,返回给用户的信息。

同时不要忘记在所有虚拟主机的一开始位置,增加默认虚拟主机配置。

<VirtualHost *:80>
    ServerAdmin prograsliu@gmail.com
    DocumentRoot "D:/wamp/www"
    ServerName localhost
    ServerAlias localhost    
    <Directory "d:/wamp/www">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

这个默认,你可以设置成Apache的www目录。

以上两步操作完成后,保存后重启Apache服务。你可以试着访问ASP网站的域名www.bxw001.com,不要加端口号,看看是否可以正常访问了。呵呵。

如果要增加多个IIS网站或者JAVA网站,只要按照上面的步骤2中的代码增加虚拟主机即可,同时将代理域名写成你需要被代理的网站的URL即可。

通过这样操作,就可以完美实现一个全能主机了,你可以随便在服务器上搭建多个不同环境的网站了。更多关于主机配置与问题的解决文章,请继续关注本博客。

转载于:https://blog.51cto.com/pin18/1250497

使用Apache反向代理实现全能主机的搭建相关推荐

  1. 用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  2. [转]用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  3. Ubuntu下Apache反向代理设置

    Apache可通过mod_proxy*.so系列模块很好的实现正向.反向代理功能,亦可通过反向代理实现负载均衡,本文将讲述基于Apache反向代理实现负载均衡的配置方法. 1.环境配置说明: 代理服务 ...

  4. Apache 反向代理与修改网页内容

    apahce与nginx经常被用于作为Web服务器,其实apache与nginx有非常多的拓展功能,可以通过访问官方网站了解相关内容.之前使用过apache实现反向代理的功能,于是把它记录下来,方便以 ...

  5. Apache反向代理访问code-server登陆账户后页面空白该怎么办?

    问题复现 添加反向代理:直接在宝塔面板的网站设置中添加反向代理,如图所示 这样操做会产生 Websocket 报错1006,导致登陆进去显示一片空白页面. 主要原因apache的反向代理需要手动添加W ...

  6. Apache反向代理

    反向代理简言之就是通过一台代理服务器,让Internet用户可以访问到内部网络上的服务器. 实验环境:一台带有两块网卡的OB服务器,一块连接外网1.1.1.1,一块连接内网192.168.100.1 ...

  7. 通过Apache反向代理实现微信服务器80端口访问

    由于微信公众平台需要的80端口已经被apache占用,所以需要基于apache配置反向代理. 代理服务器就相当于一个中介,有正向代理与反向代理两种.在正向代理中,客户端通过代理服务器访问目标服务器,代 ...

  8. Apache反向代理设置【转载】

    编译Apache时要进行的设置 ./configure --enable-mods-shared="all proxy" 1>修改 httpd.conf 文件中: LoadM ...

  9. OpenBSD配置Apache反向代理

    反向代理简言之就是通过一台代理服务器,让Internet用户可以访问到内部网络上的服务器. 实验环境:一台带有两块网卡的OB服务器,一块连接外网1.1.1.1,一块连接内网192.168.100.1 ...

最新文章

  1. yolov5 mobile 剪枝
  2. chrmoe debug
  3. Yii的errorLog
  4. 空间谱专题12:二维测向的基本方法
  5. 【动态规划】数字金字塔
  6. php制作图片轮播_图片轮播效果实现方法
  7. 计算机考研310分什么水平,知乎工学考研310是什么水平
  8. GenePix Pro 3.0
  9. ceph怎么搭建文件存储_SUSE专家谈Ceph落地之最佳实践
  10. java lambda map用法_Java 中如何使用 lambda 表达式填充 Map?
  11. noip复赛电脑有excel吗_指南 | 现在就必须了解的信息学竞赛(高一学生)
  12. Python Imaging Library: ImageFilter Module(图像滤波模块)
  13. termux 安装python3教程_termux怎么安装python
  14. 两个月快速通过软考高项(信息系统项目管理师)备考技巧
  15. java求抽象类shape_java 抽象类 Shape
  16. 真核生物基因结构 mRNA结构
  17. SiamRPN论文笔记
  18. 爬虫同步验证码登录武大教务系统
  19. HCL配置不同VLAN之间进行通讯实验
  20. DeviceIOControl详解-各个击破

热门文章

  1. 数据统计分析中的几点
  2. Git『Everything up-to-date』问题解决
  3. 输出值(4)输出值的应用
  4. nginx反代理服务器
  5. 织梦根目录下面404页面,主页能正常运行404页面,切换至栏目页404页面内的图片不能正常显示,解决...
  6. “实模式--保护模式--实模式”转换过程
  7. Android View系统解析(上)
  8. 例解基于UML的面向对象分析与设计
  9. golang获取md5
  10. 小米面试题:单词搜索