如何托管仅 web.config 的服务器?
How can I host a web.config-only server?
上下文
看到这个问题:
真的,我想要一个仅前端的 ReactJS 应用程序,它与 Azure API 对话,并将结果的位呈现到屏幕上。然后从用户那里获取输入并将其发送回 Azure API。冲洗并重复。
不幸的是,CORS 几乎排除了这一点,您不能[1]覆盖 ServiceBus 命名空间的 CORS 规则。
所以建议的解决方案是一个瘦代理服务器,代理 Azure API,以规避 CORS。
(非常欢迎这个问题的替代解决方案!)
[1] 阅读:我目前看不到任何方法,我的 Google 搜索也看不到。
问题
其他问题的用户提出了相关的 web.config 文件,所以现在我想创建该代理服务器。我真的不希望该服务器做任何事情 else,我希望它尽可能透明。
设置该服务器的最简单方法是什么?
我有点希望我能够做类似的事情:
"Tell Azure that I want a webserver, and paste/upload that web.config text into the Azure Portal"?
如果相关的话,目前我的堆栈实际上除了 npm 和 JS Create-React-App 模板的堆栈之外什么都没有。我想我们也会在 Azure 中托管网站。
我让它工作了,而且非常轻松 - Azure 可以 JustDoThis。
记录我在这里为自己写的笔记,以供将来迷路的流浪者:)
如链接问题中所述,Azure 服务器不(也不能)启用 CORS,因此我们需要以某种方式规避它。该方法是创建一个 ReverseProxy 服务器,它接受请求,将其转发到 Azure,接收响应,添加相关的 CORS headers 并 returns 将其发送给调用者。
除了跳过 "Basic Authentication" 步骤(第 3 步和第 4 步)之外,其他步骤均来自 Microsoft 博客:https://blogs.msdn.microsoft.com/mihansen/2018/04/18/reverse-proxy-with-basic-authentication-in-azure-web-app/
- 第 1 步:创建新的 Azure Web 应用程序
- 第 2 步:添加 applicationHost.xdt 文件(在
\Home\site
中)
- 步骤 2a:使用提供的模板设置 .xdt 文件的内容(我认为它确实是一个
web.config
文件?
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
</system.webServer>
</configuration>
- 跳过第 3 步和第 4 步(与身份验证相关,如果只是重定向,则不需要。)
- 第 5 步:Update/Modify/Create 重写规则
第 2 步是通过 KUDU 实现的,可在此处访问:
https://yourazuresitedomain.scm.azurewebsites.net/
关于 KUDU 是什么以及如何使用它的一些链接:
上下文
看到这个问题:
真的,我想要一个仅前端的 ReactJS 应用程序,它与 Azure API 对话,并将结果的位呈现到屏幕上。然后从用户那里获取输入并将其发送回 Azure API。冲洗并重复。 不幸的是,CORS 几乎排除了这一点,您不能[1]覆盖 ServiceBus 命名空间的 CORS 规则。
所以建议的解决方案是一个瘦代理服务器,代理 Azure API,以规避 CORS。
(非常欢迎这个问题的替代解决方案!)
[1] 阅读:我目前看不到任何方法,我的 Google 搜索也看不到。
问题
其他问题的用户提出了相关的 web.config 文件,所以现在我想创建该代理服务器。我真的不希望该服务器做任何事情 else,我希望它尽可能透明。
设置该服务器的最简单方法是什么?
我有点希望我能够做类似的事情: "Tell Azure that I want a webserver, and paste/upload that web.config text into the Azure Portal"?
如果相关的话,目前我的堆栈实际上除了 npm 和 JS Create-React-App 模板的堆栈之外什么都没有。我想我们也会在 Azure 中托管网站。
我让它工作了,而且非常轻松 - Azure 可以 JustDoThis。
记录我在这里为自己写的笔记,以供将来迷路的流浪者:)
如链接问题中所述,Azure 服务器不(也不能)启用 CORS,因此我们需要以某种方式规避它。该方法是创建一个 ReverseProxy 服务器,它接受请求,将其转发到 Azure,接收响应,添加相关的 CORS headers 并 returns 将其发送给调用者。
除了跳过 "Basic Authentication" 步骤(第 3 步和第 4 步)之外,其他步骤均来自 Microsoft 博客:https://blogs.msdn.microsoft.com/mihansen/2018/04/18/reverse-proxy-with-basic-authentication-in-azure-web-app/
- 第 1 步:创建新的 Azure Web 应用程序
- 第 2 步:添加 applicationHost.xdt 文件(在
\Home\site
中) - 步骤 2a:使用提供的模板设置 .xdt 文件的内容(我认为它确实是一个
web.config
文件?
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
</system.webServer>
</configuration>
- 跳过第 3 步和第 4 步(与身份验证相关,如果只是重定向,则不需要。)
- 第 5 步:Update/Modify/Create 重写规则
第 2 步是通过 KUDU 实现的,可在此处访问:
https://yourazuresitedomain.scm.azurewebsites.net/
关于 KUDU 是什么以及如何使用它的一些链接: