我正在尝试为在 Windows Server 2012 R2 上运行的 4D 应用程序设置一个简单的 http 和 https 反向代理。我让 http 工作,但不能使用 https。当我打开公共防火墙并直接访问 4D 应用程序时,https 工作正常。有人能提示我我做错了什么或者我需要做什么才能让 https 工作吗?
这是我所做的:我打开主服务器的 ARR 反向代理设置表单并输入以下值:启用代理直通保持活动超时 = 120 X-Forwarded-For 包含来自客户端 IP 的 TCP 端口内存缓存持续时间 = 60 秒启用磁盘缓存忽略查询字符串响应缓冲区 = 4096 kb 阈值 = 256 kb 使用 Url Rewrite 检查传入请求反向代理 = DNSName:LocalHttpPort
保存 ARR 反向代理设置表单后,会自动创建两个 URL 重写规则“ARR_server_proxy”和“ARR_server_proxy_SSL”。我所需要做的就是填写重新编码的 URL 字段。对于 http 规则,我输入:“http://DNSName:LocalHttpPort/{R0}”对于 https 规则,我输入:“https://DNSName:LocalSSLPort/{R0}”
正如我上面提到的,这些设置适用于 http。当我尝试 https 时,浏览器超时。我在某处读到我需要将为 4D 应用程序设置的 SSL 证书 + 私钥导入到 IIS。我这样做了,但我不知道如何将其绑定到主服务器?如果我这样做,我是否需要设置“启用 SSL 卸载”?
我还在其他地方读到我应该在 ARR 反向代理设置表单的反向代理字段中仅输入 DNSName。我输入了 DNSName:LocalHttpPort。当我仅输入 DNSName 时,浏览器超时。在阅读了数十篇关于此主题的文章后,我越来越困惑。
这是重写规则的 XML:(添加于 2021 年 8 月 19 日 14:00 MEZ)
<proxy enabled="true" />
<rewrite>
<globalRules>
<rule name="ARR_server_proxy_SSL" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Rewrite" url="https://h25XXXXX.stratoserver.net:4443/{R:0}" />
</rule>
<rule name="ARR_server_proxy" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="http://h25XXXXX.stratoserver.net:4000/{R:0}" />
<conditions>
<add input="{HTTPS}" pattern="on" negate="true" />
</conditions>
<serverVariables>
</serverVariables>
</rule>
</globalRules>
<allowedServerVariables>
<add name="{HTTPS}" />
</allowedServerVariables>
</rewrite>