apache配置多端口对应多个虚拟目录

经常需要在本地调试网站,却又不喜欢在http://localhost/网站的文件夹名/

且几个比较重要的项目我想直接用端口号以示区分,想达到的效果如下:

http://localhost/默认80端口的时候访问的是D:\目录下的A网站

http://localhost:8080/8080端口的时候访问的是E:\目录下的B网站

以此类推,网站目录可以存放在硬盘下的任何地方。

应该有两种方式:

  • 直接修改httpd.conf
  • 开启虚拟端口:修改httpd-vhosts.conf文件内容

第一种:

实现的过程如下:

1、打开apache的httpd.conf文件,在Listen 80处另起一行输入Listen 8080监听8080端口,如需其他端口需逐个添加:

1
2
3
4
5
Listen 80
Listen 8080
Listen 8081
Listen 8082
...

2、在httpd.conf文件最后一行添加:

1
2
3
4
5
6
NameVirtualhost localhost:8080 # 虚拟主机端口

<virtualhost localhost:8080>
documentroot E:/sk #这里就是你的网站目录绝对路径了哦~注意斜杠的方向
servername locahost:8080 #对应监听的端口
</virtualhost>

3、继续在最后添加目录属性:

1
2
3
4
5
6
<Directory "E:/sk">
Options Indexes FollowSymLinks
AllowOverride All #允许URL重写
Order allow,deny
Allow from all
</Directory>

完毕后记得重启apache,然后再浏览器输入http://localhost:8080/就可以访问到E:/sk下的网站了


第二种:比较简单分三步

1.在httpd.conf中添加新的监听端口:Listen 8887

2.#Virtual hosts
Include conf/extra/httpd-vhosts.conf 虚拟主机 开启多端口 原先是注释掉的

3.修改httpd-vhosts.conf内容,注意此文件的路径。

新增如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:8887> 
  ServerAdmin webmaster@dummy-host.localhost
  DocumentRoot "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2"
  ServerName localhost
  ServerAlias localhost
  ErrorLog "logs/dummy-host.localhost-error.log"
  CustomLog "logs/dummy-host.localhost-access.log" common
  <Directory "D:\Apache Software Foundation\apache-tomcat-6.0.33\webapps2">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

在局域网中也可使用内网ip(192.168.1.*)+端口号的形式访问网站。


特别说明:如果在外网中想以“ip+端口号”的形式访问网站,则需要进行端口映射。

注意:当服务器的防火墙开启后,要在高级设置-》入站规则中添加相应端口。