正确步骤:
第一步:在 IIS 上启用 Websocket
参考步骤:
通过“管理”菜单或“服务器管理器”中的链接使用“添加角色和功能”向导。
选择“基于角色或基于功能的安装”。 选择“下一步”。
选择适当的服务器(默认情况下选择本地服务器)。 选择“下一步”。
在“角色”树中展开“Web 服务器 (IIS)”、然后依次展开“Web 服务器”和“应用程序开发”。
选择“WebSocket 协议”。 选择“下一步”。
如果无需其他功能,请选择“下一步”。
选择“安装”。
安装完成后,选择“关闭”以退出向导。
第二步,删除sec-WebSocket-Extensions头
参考步骤:
首先将服务器变量添加到IIS管理器:网站:URL重写>查看服务器变量>添加>HTTP_SEC_WEBSOCKET_EXTENSIONS
然后将该变量添加到将请求转发的服务器变量中,可以在编辑入站规则>服务器变量中添加,随意输入一个值
然后去web.config或redirect.config中修改,删除value值
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8123/{R:0}" logRewrittenUrl="true" />
<serverVariables>
<set name="HTTP_SEC_WEBSOCKET_EXTENSIONS" value="" />
</serverVariables>
debug步骤:
部署vscode server,需要剪辑板权限粘贴到cmd,否则出现的是服务端的剪辑板->剪辑板权限需要https
https需要域名,域名需要重定向,在宝塔面板设定重定向,页面可以显示,但websocket无法访问
搜索发现,需要先启用websocket,使用第一步
发现ws请求从不适用变为了空白,说明此步骤有用
同时发现,iis有不支持WebSocket-Extensions压缩,进行第二步,发现成功使用
参考内容
https://blog.csdn.net/lxb18711871497/article/details/119868910
https://community.home-assistant.io/t/solved-access-via-iis-reverse-proxy-died-after-upgrade-to-0-58/34408/5