IIS7.5转发至Apache, 共用80端口

一些情况下, 我们需要同时使用IIS和Apache, 那么需要满足以下条件

同时启动IIS和Apache 且

(用Apache代理IIS

用IIS代理Apache)

本文介绍用IIS代理Apache的方法

Step1 配置Apache和域名, 且使用非80端口, 使得以如下uri可以访问到你的网站

http://www.domain.com:81

Step2 为IIS正确安装”URL重写”重写模块(已安装则略过)

这个模块某些版本有bug, 在Windows Server 2008 R2+IIS7.5环境下, 可使用这个.

Step3 安装Application Request Routing(已安装则略过)

网址: https://www.iis.net/downloads/microsoft/application-request-routing

Step4 打开IIS管理器

->点击 Application Request Routing Cache

-> 点击 Server Proxy Settings

-> 勾选 Enable Proxy

-> 应用, 如下图

Step5 新建IIS站点, 并为其绑定你要用的域名, 以及80端口, 目录随便指向一个目录即可, 如下图

为什么要新建站点?

在IIS全站设置URL转发, 也可以实现IIS代理Apache;

但是IIS代理Apache是要损耗一定性能的.

在全站设置会影响到服务器上其他IIS网站

Step6 在该”转发站”里点”URL重写”, 并添加空白规则, 如下图

Step7 在”入站规则”里如下图这么写

如此用来实现将 www.domain.com的80端口指向由Apache管理的81端口

以上, 曾实例化于Windows Server 2008 R2 + IIS7.5

让Apache记录每个访问的运行时间

在httpd.conf的<Virtual Host>节点里, 加入如下语句

CustomLog "c:/apache_log.log" "[%a]%{%F %T}t id=%{APIIndex}i time=%D(us) 

url=%U%q"

然后c:/apache_log.log就是你的日志文件, 里面的内容像下面

[124.64.19.29]2020-11-30 16:37:20 id=- time=19532(us) url=/index.php?m=poster&c=index&a=show_poster&id=1

时间单位应该是微妙

这也适用于Linux

Windows Server 2008 R2下配置PHP7.4+Apache2.4

Step1 下载Apache httpd

1. 打开 https://www.apachelounge.com/download/

2.找到binaries下载, 如Apache 2.4 binaries VS16; 这里以64位的为例, 下载这个文件

httpd-2.4.46-win64-VS16.zip

3.解压缩这个zip文件, 得到文件夹Apache24; 这就是Apache, 将其放到你喜欢的位置如 C:\_server\Apache24

Step2 下载PHP

1. 打开https://windows.php.net/download

2.找到VC15 x64 Thread Safe, 下载Zip; 将其中的文件解压缩到一个空文件夹中, 如php74, 这就是PHP7.4

3.将php74放到你喜欢的位置, 放完之后的路径如C:\_server\php74

Step3 安装Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019

1.打开 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

2.下载vc_redist.x64.exe, 然后安装

Step4 配置php.ini

1.打开那个php74文件夹,

2.找到php.ini-production文件, 并复制一份

3.将复制体改名为php.ini

4.打开php.ini, 找到语句

;extension_dir=ext

并改为

extension_dir = "C:/你喜欢的那个路径/php74/ext"

注意去掉前面的分号

注意在php.ini和下文的httpd.conf中都是用/代替\吧, 因为目前开源软件貌似更喜欢/这样式的

保存.

Step5 配置httpd.conf

1.打开如C:\_server\Apache24\conf\httpd.conf

2.找到LoadModule区域, 并补充如下代码, 用于连接Apache和PHP

LoadModule  php7_module 'C:/你喜欢的那个/php74/php7apache2_4.dll'
<IfModule php7_module>
    PHPIniDir 'C:/你喜欢的那个/php74/php.ini'        
    AddType application/x-httpd-php .php .html
</IfModule>

<VirtualHost *:80>
    ServerName www.test.com
    DocumentRoot "C:/wwwroot"
    DirectoryIndex index.html index.php

    <Directory "C:/wwwroot">
        Options -Indexes +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

把上文中的www.test.com改成你绑定的域名;

c:/wwwroot改成你网站的运行目录;

80改成你们的端口

然后再httpd.conf中全文搜索c:/Apache24

并将其改为

c:/你喜欢的那个/Apache24

Step6 测试httpd

1. 在你的网站根目录下建立一个phpinfo.php文件, 内容如下

<?php
  phpinfo();

2.运行如C:\_server\apache24\bin\httpd.exe

3. 这是你在浏览器输入http://localhost:端口/phpinfo.php, 如果能打开你的网站说明之前的操作是有效的;

4.如果你刚才写的域名已经指向了服务器, 且服务器的安全组和防火墙放过了你的端口; 那么你也可以用http://你的域名:端口/phpinfo.php来看一下

Step7 将httpd注册为服务

1.在服务器的”计算机”上点右键->属性->高级系统设置->环境变量->找到如”Administrator的用户变量”里面的PATH->编辑

在变量值里, 不要删除原有的内容(删除可能导致系统混乱, 你可以先复制一份到别处); 在原有内容后继续添加上

;C:\你喜欢的\apache24\bin

然后确定,确定,确定

2. 开始->运行->输入cmd->回车

3.在cmd里运行

httpd -k install

来安装httpd服务

4.安装成功以后, 你就可以

::启动httpd服务
httpd -k start
::停止httpd服务
httpd -k stop
::重启httpd服务
httpd -k restart 

这样就安好了.