问题标签 [arr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
72 浏览

iis-7 - 重写不能像我期望的那样在 IIS 上工作

我有以下重定向

我想做的是我有一个 url http://www.mysite.com/a/username/filename。我希望将其重写为https://s3.amazonaws.com/bucket/subfolder/username/filename.o8d

目前我在访问我希望工作的 url 时收到 404 错误。

有任何想法吗?

好的更新。我已经尝试更改<action type="Rewrite" url="https://s3.amazonaws.com/bucket/subfolder/{R:1}/{R:2}.o8d" /><action type="Rewrite" url="/" />,它可以很好地重写到我网站的根目录。我已经安装了arr,我修复并重新启动。不知道在这里做什么。我一直在阅读的所有内容都说这应该是可行的,但它不起作用。

就像重写器自动将重写设置为http://www.mysite.com/{Rewrite URL}

0 投票
0 回答
1207 浏览

iis - 跨应用程序池的 url 重写和 ARR

我试图弄清楚如何使用 url 重写和应用程序请求路由 (ARR) 在同一服务器上的不同应用程序池中进行重写。

在一个简化版本中,这是我所拥有的:一个 REST 服务 API 使用 2 个虚拟目录 Service.A 和 B 实现,因此虚拟目录是访问资源 A 和 B 的 url 的一部分

获取 [https://]api.mycompany.com/Service.A/A

获取 [https://]api.mycompany.com/Service.B/B

我想要实现的是为 api 提供一个没有虚拟目录名称的外部 url,并且显然不必进行代码重构(合并解决方案文件和构建)

获取 [https://]api.mycompany.com/A

获取 [https://]api.mycompany.com/B

我实现了一个 url 重写规则来匹配路径中的 /A 并替换为 /Service.A/A,在默认网站级别的 web.config 中使用类似这样的代码,效果很好。

问题是,当我将不同的应用程序池分配给 Service.A(来自默认网站的应用程序池)时,这将立即失败并出现 403 错误,但这是我们这边运行应用程序/虚拟目录的要求在不同的应用程序池下,以最大程度地减少任何池发生故障或回收时的影响。

我做了一些研究。下面的上一篇文章基本上说“如果你想将请求重新路由到另一个应用程序池,你必须进行一个跃点,无论该跃点是通过 winsock 还是命名管道或其他任何东西”,但没有太多细节。我也浏览了 ARR 指南,但无法弄清楚如何在这种情况下使用 ARR。

http://forums.iis.net/t/1151510.aspx?Rewrite+across+application+pools+

有什么帮助吗?建议和意见是否我在正确的方向?

谢谢!

哦,忘了说环境:目前在开发环境中,Windows 7 上的 IIS 7.5,Url Rewrite 2.0 和 ARR 3.0,由 Web Platform Installer 安装。

0 投票
4 回答
3457 浏览

iis - 如何跟踪应用程序请求路由增加的开销?

我们有一个需要启用 SSL 的 Delphi SOAP 服务。我选择使用 IIS ARR 反向代理进行 SSL 卸载以简化配置(与 OpenSSL 和手动证书 + 密码管理相比)。ARR 有效,但它增加了大量开销...... 18 个服务请求的响应时间从不到 2 秒缩短到 19 秒(压缩后总计约 60Kb)。

我在发送和接收消息时向客户端和服务器添加了时间戳日志记录。它显示从客户端发送到服务接收之间通过 ARR 的每个请求路由增加了大约 1 秒。响应很快被路由回来,只有通过 ARR 的请求路由很慢(见下图)。

如何追踪开销的来源?ARR 不适合这个用例吗?我尝试调整和禁用大多数设置,包括缓存。我尝试了具有干净 IIS 设置的不同主机,包括生产 Windows Server 2012。SSL 本身不是开销,只是使用 ARR HTTP 反向代理会导致延迟。

来自 Fiddler 的请求和响应示例:

客户端和服务器时间戳网格

I0IS 跟踪显示来自 ARR 的开销

0 投票
1 回答
551 浏览

iis - 检查客户证书等

我想使用应用程序请求路由和 URL 重写作为反向代理。我们的一些应用程序需要 https 和客户端证书。是否可以编写某种自定义提供程序来检查传入请求(cookie)和客户端证书并决定是否转发请求?

问候罗伯特

0 投票
2 回答
1178 浏览

c# - 如何识别请求是否来自 URL 重写模块

如果标题不清楚,请道歉,基本上我有一个监听端口 80 的 Web 代理,我在 IIS 上设置了 URL 重写,(web.config 上的规则如下),它确实

http://example.com/api/blah/blah ->
http://example.com:8095/api/blah/blah

它工作正常,没有问题,当我直接请求 localhost:8095 时也可以工作

但我也希望能够识别请求是直接请求还是通过 URL 重写模块。

我的想法是,将查询字符串附加到 URL 上,当 url 在 IIS 上被重写时,我可以检查查询字符串是否存在,如果不存在,则通过 URL 重写,那么这是直接请求

例子:

http://example.com/api/blah/blah?from=proxy -> http://example.com:8095/api/blah/blah?from=proxy

http://example.com/api/blah/blah?existing_query_string=blah&from=proxy -> http://example.com:8095/api/blah/blah?existing_query_string=blah&from=proxy

我怎样才能做到这一点?还是有其他方法可以做到这一点?

非常感谢

0 投票
2 回答
5431 浏览

iis - 使用 IIS 和 ARR 反向代理返回“服务器返回无效或无法识别的响应”

我正在从一个站点迁移到另一个站点,尽管这些站点位于同一台服务器上,但它们不在同一个应用程序池中。

因此,我提出的建议类似于 IIS 文章“使用 URL Rewrite v2 和应用程序请求路由的反向代理”。

我的设置如下:

  • 默认网站(接受 *:80 和 *:443 上的连接)。
  • 新网站(接受 *:81 上的连接)

我在 ARR 模块中启用了代理,并在“新网站”中有一个重写规则。目前,我在新站点(new-page)中只有一个页面,但是随着我们迁移,这将逐渐增加。

当我访问 www.mysite.com/index.htm 时,我看到了我的旧主页,这是正确的。

但是,如果我访问 www.mysite.com/new-page,则会收到错误消息:

HTTP 错误 502.3 网关错误

服务器返回无效或无法识别的响应

HTTP 错误 502.3 - 网关错误 - 服务器返回无效或无法识别的响应

对此的任何帮助将不胜感激。

编辑:

我还启用了 WinHttp 跟踪,今天的请求日志可以在 pastebin找到。

我在下面有一些进一步的信息(从 IIS Failed Request Logging 中检索)。

请求诊断 www.mysite.com:80/new-page

0 投票
1 回答
1639 浏览

iis-7 - https重定向到http

我们使用带有卸载功能的 Microsoft ARR 来管理我们的新网络场。该站点分为 2 个应用程序。一个持有内容管理系统,另一个持有采购系统。出于功能目的,这些需要分开。连接 2 的链接在 url 中有 https,但是当页面加载时它是在 http 上。如果您手动将地址栏中的 url 更改为 https 那么它可以工作,那么为什么它首先将链接加载为 http 呢?

希望这不是太模糊。我只是一个不起眼的程序员,服务器配置不是我的专业领域。

有什么想法吗?

0 投票
1 回答
1814 浏览

ssl - 通过 Microsoft ARR 使用 SSL

我正在尝试使用 SSL 卸载来允许我们的 webfarm 上的 https。我们可以让 SSL 工作的唯一方法是安装证书并将其绑定到每台服务器上的 IIS 中。然而,我们的农场是可扩展的,我们需要能够创建服务器并随着流量水平的变化而删除它们。我们无法在服务器模板中包含证书,因为它已损坏并且无法正常工作。

但是,如果我理解正确,我们应该只需要在 ARR 服务器上安装证书,并且 SSL 卸载应该适用于所有其他服务器。但是,这似乎不起作用。

虽然我们可以在创建服务器时安装证书,但这是一个额外的麻烦,似乎应该有更好的方法来做到这一点。

有什么想法吗?

0 投票
0 回答
150 浏览

iis - IIS URL Rewrite 是否有 Proxy_Intercept_Errors(如 Nginx)

发布此问题后: https ://stackoverflow.com/questions/20891667/how-to-ignore-a-rule-if-the-rewrite-page-is-not-200-ok-status

我偶然发现: nginx as load balancer server out 404 page based on HTTP response from app server

哪个,如果我错了,请纠正我,但是,基本上说 Nginx 可以做我需要使用的东西

proxy_intercept_errors(来自 nginx.org)

确定是否应将代码大于或等于 300 的代理响应传递给客户端或重定向到 nginx 以使用 error_page 指令进行处理。


是的!

这正是我正在寻找的。

IIS7.5 URL Rewrite 2.0 + ARR 有这个功能吗?或者这只是 Nginx 服务器独有的东西?

0 投票
0 回答
698 浏览

asp.net - 将 IIS URL 重写与 ASP.NET 更新面板一起使用会导致错误

这个问题与问题 15632722 中的一些内容有关:“Outbound rules don't apply inside updatepanel”

我有一个通过 IIS 应用程序请求路由作为反向代理向公众公开的 Web 应用程序。

有几条规则可以在离开 IIS 的过程中重写内容以“修复”URL 以适应反向代理设置。除了使用<asp:UpdatePanel>.

在成功获取要根据需要重写的 UpdatePanel 的内容后,包含 UpdatePanel 的页面开始产生以下 javascript 错误:

Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near [HTML_Specific Details Omitted]

作为参考,URL 重写规则之一是:

我的假设是,当响应被重写时,返回的 Content-Length 的差异导致 UpdatePanel 的 javascript 在解析响应并将其转储到页面时失败。不幸的是,我对 UpdatePanels 如何工作的内部原理了解得不够多,无法准确地弄清楚发生了什么。

我怎样才能避免这个错误?