全部
我正在使用Windows Server 2022(EC2),并使用 URL重写 * 和 ARR 设置 IIS(10.0.20348.1)。服务器有网页(HTML和JavaScript)和Flask应用程序。JavaScript访问Flask应用程序路由。
例如,当JS访问'https://subdom.mydomain.com/myapp/login/'时,我希望URL被写入'http:// private_ip *:5000/login/'。Before: ``https://subdom.mydomain.com/myapp/login/
After: http://
private_ip
:5000/login/
以下入站规则已制定,但JavaScript收到404。Pattern: api(.*)
Rewrite URL: http://
private_ip
:5000{R:1}
这是web.config,如您所见,默认文档是'login.html',login.js访问Flask API路由'/login/'。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<add value="login.html" />
</files>
</defaultDocument>
<tracing>
<traceFailedRequests>
<remove path="*" />
</traceFailedRequests>
</tracing>
<rewrite>
<rules>
<remove name="ReverseProxyInboundRule1" />
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="api(.*)" />
<conditions />
<serverVariables />
<action type="Rewrite" url="http://xxx.xx.xx.xxx:5000{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
我怎样才能解决这个问题呢?重写规则无效?
你的建议将不胜感激。
1.已检查[Log rewrited URL]选项以了解重写后的URL,但找不到任何有用的日志记录。
1.查看了FaildReqLogFiles,但我认为没有找到任何有用的信息。
1.从服务器本地访问,Flask应用程序通过http://private_ip:5000/login/正常工作。
1条答案
按热度按时间8dtrkrch1#
感谢您的宝贵意见!问题解决了。
我引用了Lex Li-san提供的The Very Common Mistakes When Using IIS URL Rewrite Module。我已经安装了ARR与URL重写,但没有做任何设置。所以我做了如下:
1.打开IIS并在左窗格“连接”中选择服务器。
1.双击[Application Request Routing Cache]并将其打开。
1.单击右窗格中的[服务器代理设置...]。
1.打开[启用代理]复选框。将其他项目保留为默认设置。
我没有像以前那样更改“URL重写”设置。