![在同一 Windows Server 上运行 IIS 和 Apache](https://linux22.com/image/490340/%E5%9C%A8%E5%90%8C%E4%B8%80%20Windows%20Server%20%E4%B8%8A%E8%BF%90%E8%A1%8C%20IIS%20%E5%92%8C%20Apache.png)
我有一台 Windows 2003 服务器,并在其上运行 IIS。我想在服务器上运行 php,以便可以托管 drupal 站点。我希望使用 apache 托管站点,以便拥有干净的 URL。是否可以同时运行 IIS 和 Apache?您有什么建议吗?
答案1
您可以让 IIS 和 Apache 位于同一个端口上 - 如果它们位于不同的 IP 地址上。但是您需要对 IIS 进行一些特殊配置,因为它通常会将所有端口绑定到所有 IP。以下是有关如何配置 IIS 以仅侦听某些端口/IP 的文档: http://support.microsoft.com/kb/813368/EN-US/
答案2
如果你想同时运行它们,并让它们同时存在出现响应同一端口上的请求,那么您可以使用称为反向代理的东西。
假设您希望所有内容都通过 Apache 运行,但有几个 URL 除外,您希望通过 IIS 运行。
您可以设置 Apache 来监听:80(正常 HTTP 流量),并设置 IIS 来监听其他内容(例如:81)。
除 /myIISApp/ 之外的所有内容都将通过 Apache 运行,而 /myIISApp/ 将通过 IIS 运行。
然后,你将设置你的反向代理捕获任何与 /myIISApp/ 匹配的 URL 并将其转发到 :81/myIISApp/ (或 IIS 计算机的任何 URL)。
请注意,将 IIS 用作 :80 服务器并将 Apache 用作 :81 服务器可能会更难配置。请参阅这篇 SF 帖子在这里了解基本操作方法。
答案3
我目前就是这么做的。但是,squillman 是正确的。您需要让 Apache 监听与 IIS 不同的端口。我对 IIS 使用 80,对 Apache 使用 81。
要使您的 URL 不带端口显示,您可以在 IIS 中创建重定向。请使用以下说明:
在 IIS 管理器中,展开本地计算机,右键单击要重定向的网站或目录,然后单击“属性”。
单击主目录、虚拟目录或目录选项卡。
在“此来源的内容应来自”下,单击“重定向到 URL”。
在“重定向到”框中,键入目标目录或网站的 URL。例如,要将 Catalog 目录中的所有文件请求重定向到 NewCatalog 目录,请键入 /NewCatalog。
答案4
您将无法让它们都监听相同的端口,否则您应该可以同时运行它们。
编辑(感谢 MattB):
除非您让它们在不同的 IP 地址上运行。然后您可以将它们绑定到每个地址上的相同端口。