【发布时间】:2016-08-09 07:16:17
【问题描述】:
我正在使用 IIS 服务器运行我的网站 (www.example.com)。现在我的要求是从 Apache 服务器为 PHP 运行网站 (www.example.com),从 IIS 服务器为 ASP .NET 运行 www.example.com/XYZ url。
这种路由可行吗?
【问题讨论】:
标签: php .net apache iis routing
我正在使用 IIS 服务器运行我的网站 (www.example.com)。现在我的要求是从 Apache 服务器为 PHP 运行网站 (www.example.com),从 IIS 服务器为 ASP .NET 运行 www.example.com/XYZ url。
这种路由可行吗?
【问题讨论】:
标签: php .net apache iis routing
您是指在同一个 Windows Server 上吗?在 80 端口上?
我认为不可能在一个端口上运行两项服务。服务器必须先处理端口 80 上的传入请求,然后再决定将其路由到哪个服务,然后每个服务必须在解析域名之前接受该请求。服务器和服务,在为时已晚之前无法知道请求是针对哪个进程的。
如果您不介意在非标准端口上运行其中一项 Web 服务,它应该可以工作。你试过吗?
【讨论】:
你可以在apache上使用反向代理功能。
a2enmod proxy proxy_http
然后将 /XYZ 路由到 apache 配置中的 IIS 服务器(或 IIS 端口)
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyPass /XYZ http://old.iis.server/
ProxyPassReverse /XYZ http://old.iis.server/
</VirtualHost>
重新启动 apache,它应该可以正常工作。
编辑: 如果它必须在同一台物理机器上,IIS 必须“移动”到另一个端口。两种服务都无法绑定到端口 80(HTTP)/443(HTTPS)。这简直是不可能的。一个端口 - 一项服务。 因此,将 IIS 服务器的端口更改为例如8080 (HTTP) 和 8443 (HTTPS) 并使用
ProxyPass /XYZ http://localhost:8080/
ProxyPassReverse /XYZ http://localhost:8080/
【讨论】: