URL重写与IIS与'URL重写'得到404

c6ubokkw  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(160)

全部
我正在使用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/正常工作。

8dtrkrch

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重写”设置。

相关问题