配置IIS和Apache共用80端口 - Apache - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > Apache

配置IIS和Apache共用80端口

发布时间:2014-03-24 来源:服务器之家

方法一:
1、服务器IP假设为222.222.222.222,操作系统为Windows 2003 server

2、IIS中有一个asp.net站点,域名为www.a.com,并且已绑定,初始端口为80

3、现在需要创建一个PHP站点,需要使用web服务器为Apache。域名为www.b.com

提出的问题:

当客户端提交http时,默认是80端口,而IIS默认是80端口,当访问www.a.com时,站点自动由IIS解释。但访问www.b.com时,由于服务器是Apache,端口是80,显然此时服务器上的IIS和Apache冲突,当然你可以改变IIS和Apache的端口。但你不希望用户访问站点是需要加上端口(http://www.a.com:8080)吧?

解决方案,步骤:

使用apache来代理IIS,从而达到虚拟的Apache和IIS的整合。即当用户请求a.com和b.com时,统一由Apache来解释,然后Apache将virualhost自动转向给IIS。

1、将IIS端口设置为8080。此处略。访问http://www.a.com:8080即可看到IIS中的asp.net站点。

2、安装Apache,这里下载的是apache2.2,注意,请下载msi的win32程序,因为操作系统是Windows.安装后请将Apache端口设置为80.安装的最后有提示,此处细节省略。

3、开始配置虚拟主机。找到apache安装目录下conf下的httpd.conf,用记事本打开。

找到这四行,将注释去掉(即去掉每行前面的#号)
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

在其中加上
NameVirtualHost 222.222.222.222:80                                           

<VIRTUALHOST 222.222.222.222:80>        (如果配置的有多个域名的话把ip:222.222.222.222换成*)
    ServerAdmin a@a.com
    ServerName www.a.com
    DefaultLanguage zh-CN
    AddDefaultCharset GB2312
    ProxyPass / http://www.a.com:8080/
    ProxyPassReverse / http://www.a.com:8080/
</VIRTUALHOST>

上述代码就是将Apache的请求转向了IIS,保存文件后,重新启动Apache。

此时请访问www.a.com,是不是和www.a.com:8080一样呢!

OK!a站点虚拟成功!至于B站点可以有详细的配置,例如默认文档等等,此处省略。

PHP站点配置将在以后配置!
方法二:
 

因为只有一台服务器(win2003 server) 既需要在上面跑asp程序 又需要在上面跑php应用 又不想用iis跑php应用 还有就是不想把asp程序跑在apache上 就需要一个apache与iis共存的方案。

iis是windows2003 server自带的iis6.0

apache是apache2.2.8

首先当然是下载并安装apache

接着开始先把自动启动的iis服务器停下来,修改iis的端口为非80(比如8081)

再接着打开apache的httpd.conf文件开始配置

要让apache支持转发也就是做iis的代理那么就要先启用apache的代理模块:

#LoadModule proxy_module modules/mod_proxy.so
-->LoadModule proxy_module modules/mod_proxy.so

#LoadModule proxy_connect_module modules/mod_proxy_connect.so

-->LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

-->LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

-->LoadModule proxy_http_module modules/mod_proxy_http.so

完成了代理模块的启用 那么我们开始配置虚拟主机

先包含httpd-vhosts.conf文件

#Include conf/extra/httpd-vhosts.conf

-->Include conf/extra/httpd-vhosts.conf

保存httpd.conf,打开httpd-vhosts.conf文件

开始配置虚拟机

NameVirtualHost *:80

<VIRTUALHOST *:80>

    ServerAdmin b@b.com
    ServerName    www.b.com
    DocumentRoot  "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
</VIRTUALHOST >
<VIRTUALHOST *:80>
    ProxyPreserveHost On
    ServerAdmin a@a.com
    ServerName www.a.com
    DefaultLanguage zh-CN
    AddDefaultCharset GB2312
    ProxyPass / http://www.a.com:8081/ 
    ProxyPassReverse / http://www.a.com:8081/
</VIRTUALHOST>

配置完成并保存httpd-vhosts.conf

开始重启apache服务器和iis服务器

我们通过www.a.com访问过去就会看到iis的默认页面

通过www.b.com访问过去就可以看到it's work。

这样我们就实现了iis和apache共享80端口