长时间读者,第一次问问!我希望你们能帮助我。
在我的一个IIS(带ARR)路由到我的应用服务器上,一切正常,没有问题。我将首先解释下面的工作IIS(带ARR)服务器的设置,然后我将解释其他IIS(带ARR)服务器无效。
我目前有以下IIS(带ARR)设置100%正常工作:
服务器1:
运行IIS ARR。
它有2个站点(一个用于UI,一个用于REST服务)。因此,在DNS级别上,它还分配了2个额外的CNAME。
第一个站点名为“ui-portal.server1.domain”,第二个站点名为“rest-portal.server1.domain”。
ui-portal.server1.domain链接回运行apache的应用服务器(ui-app.server2.domain)。
rest-portal.server1.domain也链接回我的app服务器,该服务器也运行apache(不同的实例)(rest-app.server2.domain)。
用户界面有一个“登录Google”按钮,当按下该按钮时,会重定向到REST层应用服务器(通过ARR,而不是直接连接到应用服务器)来管理oauth重定向以及所有这些。这是该按钮的代码。
PHP代码:标题(“位置: rest-portal.server1.domain / app_google / google_landing / xxx)
请记住, rest-portal.server1.domain 是IIS上用于路由到应用服务器的网站之一 rest-app.server2.domain
一切都很完美。在chrome开发人员工具中,我可以看到重定向。请求URL标头是ui-portal(ui-portal.server1.domain),位置标头是rest-portal.server1.domain。用户可以使用他们的Google帐户完美登录。
但问题出在这里:
我有第二个暴露在互联网上的IIS服务器(带有ARR)(有时用于测试)。它位于DMZ和独立的VLAN中,并且具有所有必需的防火墙规则,因此没有问题。
为了测试我的网站在互联网上的行为方式,我创建了一个子域名(让我们称之为sub.company.com),这是该IIS服务器上的一个站点。有一个反向代理规则指向ui-app.server2.domain和rest-app.server2.domain(与上面的IIS服务器相同的应用服务器)。当我通过sub.company.com(指向ui-app.server2.domain)加载网站时,一切正常。用户界面加载速度快,我可以注册,我可以搜索,没问题。
但是,当我点击“使用Google登录”按钮时,同样的按钮在我的第一台IIS服务器上完美运行,它不起作用。出于某种原因,IIS(我认为它是IIS)用 sub.company.com 替换应该转到 rest-portal.server1.domain 的重定向。正如您所看到的,该网站的“使用Google登录按钮”仍然指向IIS服务器1,即使它从IIS服务器2加载。不确定这是否是一个问题。 (IIS Server 2确实具有防火墙规则等)。我认为这纯粹是我身上的IIS配置错误,而不是网络问题。
因此,当我从IIS服务器2加载站点时查看Google开发人员控制台时,请求URL标头将为sub.company.com,但位置标头现在也是sub.company.com而不是rest-portal。 server1.domain就像它应该是。
老实说,我不知道在哪里可以看。 (我们在内部使用代理服务器,不确定实际的代理服务器是否也会导致这种情况......)
两台服务器都运行带有IIS 8.5的Windows Server 2012 R2 Standard,完全打补丁并保持最新。
服务器1配置 Server 1 IIS redacted config. Site and Reverse Proxy 服务器2配置 Server 2 IIS redacted config. Site and Reverse Proxy