Apache与IIS同时运作并共用80端口的方法

由于工作的关系,我的电脑上一直都需要同时运作Apache与IIS。由于之前没有好好的去专研,所以一直以来我的Apache都监听81端口,而IIS就监听80端口。

使用Apache运作时,我必须在网址输入 http://localhost:81 ,真的非常不方便。有时候忘了输入“:81”结果就意外地转到了IIS的网页,造成种种的不便。

上 网找了许多文章,几乎都说在单一的IP地址下Apache与IIS共用80端口是不可能的。还好,最后还是被我找到了解决方法,那就是用Apache的代 理(Proxy)功能。其实是很简单的方法,那就是让IIS监听81端口,而在Apache建立一个虚拟网址(Virtual Host),把特定的网址用代理转址到IIS的81端口。

具体的方法如下:

  1. 首先,把IIS监听的端口换去81。 IIS7的步骤: a. Start>Run,输入“inetmgr” 运行IIS Manager。 b. 打开Sites>Default Web Site,然后右键选择“Edit Bindings...”。 c. 选择“Edit”,然后把Port换成“81”。点选“OK”然后“Close”。 IIS6的步骤: a. Start>Run,输入“inetmgr” 运行IIS Manager。 b. 打开Web Sites>Default Web Site,然后右键选择“Properties”。 c. 在Web Site的界面,把80端口改成81,按“OK”。
  2. Start>Run,输入“iisreset” 重新启动IIS。
  3. 打开Apache的设置文件,conf/httpd.conf。(默认路径为C:Program FilesApache Software FoundationApache2.2confhttpd.conf)
  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
    #Include conf/extra/httpd-vhosts.conf
    
  5. 打开extra/httpd-vhosts.conf文件。更改虚拟网址的设置。
  6. 如果你之前没有创建任何虚拟网址,那就先把httpd-vhosts.conf的内容清空,再把以下内容贴上。
    NameVirtualHost :80
    <virtualhost :80="">
        DocumentRoot C:/www/domains/www.domain.dev/public_html
        ServerName www.domain.dev
        ServerAlias domain.dev
        ErrorLog C:/www/domains/www.domain.dev/logs/error.log
        CustomLog C:/www/domains/www.domain.dev/logs/access.log common
        
            AllowOverride All
            Options Indexes FollowSymLinks
            Order allow,deny
            Allow from all
        
    
    
        ServerName localhost
        ProxyPass / http://localhost:81/
        ProxyPassReverse / http://localhost:81/
    
    
  7. “DocumentRoot C:/www/domains/www.domain.dev/public_html”为你存放文件的路径。Apache默认的路径为 “C:Program FilesApache Software FoundationApache2.2htdocs”,但是被我改成我自己的路径了。
  8. ServerName www.domain.dev 和 ServerAlias domain.dev 为虚拟网址“www.domain.dev”,这网址将用作运行Apache的。你也可以把它改成任何你自己喜欢的域名,比 如:www.myproject.dev,www.mywebsite.test,或者是test.server。最重要的是这些域名不可在真实的网络存 在,不然你就浏览不到那些网站了。
  9. “ErrorLog”和“CustomLog”是Apache的错误记录以及访问记录的路径,你一样可以改成自己喜欢的路径。
  10. 最后5行的代码是Apache代理的设置,这也就说把所有访问localhost的请求,转到localhost:81。这里我建议最好不要更改,因为Visual Studio和很多使用的IIS运行的产品都默认localhost为执行网址。
  11. 做好这一切就重新启动Apache。
  12. Start&gt;Run,输入“system32/drivers/etc/hosts”,然后用你喜欢的文档编辑器打开。
  13. 在最后一行加入:
    127.0.0.1    domain.dev    www.domain.dev
    
    *注意: 文字之间的空间是tab。
  14. 为了方便编辑hosts文件,我建议下载Host Administrator http://www.rekenwonder.com/hostadm.htm
  15. 现在你已经可以同时使用Apache和IIS了。使用Apache,就浏览 http://www.domain.dev ,使用IIS就浏览 http://localhost 吧!不用在网址加上端口号码了!

3 Comments

  1. Neobie

    Is it possible to run 2 Apache on different port at the same time?
    The another apache instance simply wont start I guess because of the same file name in the process list?..

  1. Sei Kan

    No need to run 2 Apache process. Apache able to listen multiple ports on same time. Just add more port in your config like:

    Listen 80
    Listen 81
    Listen 82

    And update your VHost

Leave a Comment

Your email address will not be published. Required fields are marked *