Apache 配置虚拟主机

时间:2022-09-01 20:56:10

做移动前端开发需要经常用微信的扫一扫来访问网站的地址,公司使用apache来配置的,不过确实没用过这东东,早上来电脑启动后发现一直报错,就对apache的配置做了一下研究,总结如下。

1.现象是在启动apache的服务时一直报错,经调查后发现是80端口的原因,80端口为iis默认使用的端口,apache得重新配置其他端口。

在安装目录的conf目录下的httpd.conf(里面以#开头的都是注释)文件是Apache 总的配置文件,在这里配置的一些内容对所有的虚拟网站都适用。
http.conf里面的配置介绍:

  • Listen :监听端口,默认情况是80。
    可以监听多个端口 ,如
    Listen 8081
    Listen 8082
  • ServerAdmin :服务器管理员邮箱。
  • ServerName:服务名。
  • DocumentRoot:网站的路径。apache会默认给配置DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs",
            打开该路径可以看到index.html,这个就是访问localhost:80的页面
  • <Directory />
           OptionsFollowSymLinks
           AllowOverride None
          Orderdeny,allow
          Deny fromall
          </Directory>

2.在conf\extra目录下有httpd-vhosts.conf文件,该文件为虚拟站点的配置:
怎么能让该文件生效呢?需要修改httpd.conf文件的  #Include etc/extra/httpd-vhosts.conf,去掉前面的#,即将httpd-vhosts.conf文件包含进来
一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHost(我猜的)
  •    NameVirutalHost *:80

          制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个 主机。

         ( 新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)

  • 关键的VirtualHost

   重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。

   因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)

   和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。

以下是我配置的本地8081的一个虚拟站点,端口使用8081,DocumentRoot为站点的目录,ServerAlias为设定虚拟主机的別名,可以设置多个,ErrorLog为错误log的写入路径

<VirtualHost *:8081>
    DocumentRoot "E:\tong\assets\assets"
    ServerName localhost
    ServerAlias 127.0.0.1
    ErrorLog "logs/error.log"
</VirtualHost>


3.至此,在浏览器中输入localhost:8081即可看到页面,如果输入localhost:8081/xxxxxx      (xxxx代表documentRoot下的html的路径)即可访问虚拟站点下的文件,

4.但用localhost并不能让微信的扫一扫成功,将其改成本地ip即可

5.为什么直接用localhost访问不行,必须加上端口号,这是因为直接访问localhost采用80端口


参考文章:

http://www.cnblogs.com/wpjsolo/archive/2012/01/19/2327457.html

http://blog.chinaunix.net/uid-18933439-id-2808715.html