Windows server 2003服务器上安装有默认 IIS 6和Apache两个服务器,IIS运行的一个.net程序,apache运行php程序,现在想让它们同时都能通过80端口访问,设置起来还比较简单。
IIS的.net程序假设绑定81端口,主机名:www.a.com
apache的php程序绑定80端口,主机名:www.b.com
然后假设apache服务器已经安装完成,打开httpd.conf配置文件,找到这些地方去掉#开启代理模块:
1
2
3
4
|
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 |
还有确保这里也取消了注释:
1
|
Include conf/extra/httpd-vhost.conf |
然后打开apache/conf/extra目录里面的httpd-vhosts.conf文件,在最后添加如下内容:
1
2
3
4
5
6
7
8
9
10
|
NameVirtualHost *:80 <VIRTUALHOST *:80> ServerName www.b.com DocumentRoot "D:/web/php站点目录" </VIRTUALHOST > <VIRTUALHOST *:80> ServerName www.a.com ProxyPass / http: //www.a.com:81/ ProxyPassReverse / http: //www.a.com:81/ </VIRTUALHOST> |
打开文件 C:WindowsSystem32Driversetchosts
在最后面添加
127.0.0.1 localhost
127.0.0.1 www.a.com
127.0.0.1 www.b.com
最后把两个服务器都重启一下,同时打开www.a.com和www.b.com都能正常访问了。
注意 :在启动apache的时候,可能会报错,原因是80端口被占用了 ,我的做法是查看所有的IIS网站,发现都没有使用80端口,干脆将整个IIS都暂停了,也还是报错
方法/步骤
-
依次点击:开始-运行
-
在运行输入框中,输入cmd,然后点确定
-
在弹出的dos输入框中输入netstat -nao,并回车
-
可以看到刷屏,找到80端口,看到该端口已经打开了,并且被编号为3448的进程占用;如果没有打开,请查阅系列文章《80端口的烦恼——防火墙打开80端口》进行打开
-
现在就来看看是哪个进程占用了80端口,在任务栏中右键点击选择任务管理器,进入如下画面;点击菜单:查看-选择列
-
确定第一个选项PID是被选中的,然后点确定
-
在进程标签页中找到编号为3448的进程(编号上面获取的编号一致);可以看到Apache占用;如果该进程不是你所希望的进程,那么可以去相应程序修改相应端口号(如被下载软件占用,则去相应的下载软件中修改端口号,以释放80端口)
-
最后我查出来是system占用了,千万别手残终止,否则整个电脑会崩溃,最后排查出来是安装了sqlserver20008后 SQL Server Reporting Services 占用80