AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[arr](server)

Martin Hope
Dean Christian Armada
Asked: 2020-07-24 19:43:50 +0800 CST

具有反向代理和静态的 Microsoft IIS 规则

  • 2

我有一个 IIS 服务器,它最初在 wwwroot 中托管静态 HTML,但后来我们决定,如果百度蜘蛛尝试爬网,我们会将流量映射到也在 IIS 服务器旁边运行的 NuxtJS Web 服务器。

因此,我们安装了 ARR(应用程序请求路由)以启用反向代理,它工作正常,现在我们首先尝试测试 URL 重写入站规则的位置:

  • 如果百度蜘蛛将请求映射到 NuxtJS 服务器(http://localhost:3000)(这是为了先测试)

因此,我们希望如果普通用户请求,那么它将在 wwwroot 中提供静态 HTML,因为它没有达到规则,而是我得到了 500。

记笔记:

  • 我正在使用 Windows 2012 和 IIS 8.5 版
  • 如果我禁用我的入站规则,那么它肯定会提供静态 HTML 文件

那么我需要创建另一个规则吗?我期待如果它没有达到任何规则,它刚刚在 wwwroot 中读取的默认行为将会发生

更新

  • 我决定为我的静态 HTML 服务创建另一个规则。下面是 IIS 生成的重写规则。我现在的问题是第二条规则不起作用。当我禁用第一条规则时,第二条规则就会起作用
<?xml version="1.0" encoding="UTF-8"?>
<rules>
    <clear />
    <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="false">
        <match url="(.*)" />
        <action type="Rewrite" url="http://localhost:3000/{R:1}" />
        <conditions>
            <add input="{HTTP_USER_AGENT}" pattern="^((?Baidu).)*$" />
        </conditions>
    </rule>
    <rule name="StaticHTMLForBaiduCrawler" enabled="true" stopProcessing="false">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_USER_AGENT}" pattern="^((?!Baidu).)*$" />
        </conditions>
        <action type="Rewrite" url="{R:1}/index.html" />
    </rule>
</rules>

iis iis-8.5 arr
  • 1 个回答
  • 516 Views
Martin Hope
Piedone
Asked: 2017-01-15 18:16:46 +0800 CST

应用程序请求路由未清理缓存文件

  • 0

我已将 ARR 配置为执行输出缓存的反向代理。缓存条目的 TTL 为 20 分钟,但似乎缓存文件永远保留在磁盘上。

TTL 在应用程序的 Web.config 文件中根据重写规则进行配置:

    <rule name="Default ARR cache control" enabled="true">
      <match url=".*" />
      <serverVariables>
        <!-- First arg of value is: 1 to be always active, 0 only if there are no cache headers set. -->
        <set name="ARR_CACHE_CONTROL_OVERRIDE" value="0,max-age=1200" />
      </serverVariables>
    </rule>

在 HTTP 响应中,我也可以正确地看到这个 max-age 并且缓存确实过期了,我得到了新的结果。如果我打开一个缓存文件,它也会包含Cache-Control: public, max-age=1200在它的标题中。

但是缓存文件仍然存在,即使未使用。磁盘缓存的“缓存清理间隔”设置为 5 分钟,所以我认为文件最多只能保留 25 分钟,但也有几个月前的文件。

我错过了什么,如何让 ARR 删除过时的缓存文件?

这里解释了如何使用 scavenge.exe 来清理辅助驱动器上的缓存文件,但与主驱动器无关。或者如果我没有一个缓存驱动器慢慢填满,我应该手动运行这个实用程序吗?

iis arr
  • 1 个回答
  • 1399 Views
Martin Hope
Daniel A. White
Asked: 2016-10-05 08:00:33 +0800 CST

IIS 在 ARR 之前重写位置标头

  • 4

我们有一个重写配置,在这样的配置中将 ARR 视为反向代理:

Browser client (OriginA) <-> IIS/ARR (OriginB) <-> Server

客户端是任意数量的网络浏览器。我们无法更改此配置。

  1. 客户端请求http://originb/return ,请求中带有一个 URL,例如http://origina/done.html。
  2. ARR 然后将请求转发到http://server/return。
  3. 服务器响应Location设置为http://origina/done.html和 HTTP 302 的标头。我已经用 Wireshark 验证了这一点。
  4. 管道中某处的 IIS 将Location标头更改为http://originb/done.html。这就是问题开始的地方。
  5. ARR 在标头的 PATTERN_MATCH 步骤中看到 originb URL Location。
  6. ARR 将 originb URL 报告为LocationGENERAL_RESPONSE_HEADERS 步骤中的标头。
  7. 客户端盲目接受 URL 并重定向到不存在的http://originb/done.html而不是http://originb/done.html

我已经启动了失败的请求跟踪,这就是我看到第 5 步和第 6 步的方式。

什么可能导致 IISLocation在 ARR 之前重写标头?我可以使用其他任何 IIS 工具来解决这个问题吗?

http iis arr
  • 1 个回答
  • 2596 Views
Martin Hope
Piedone
Asked: 2016-08-20 06:42:46 +0800 CST

应用程序请求路由反向代理不转发 X-ARR-ClientCert 标头

  • 1

我将 IIS ARR 设置为反向代理,后面有一个 Web 应用程序。如果我将 HTTPS 请求发送到标头中带有值的代理,X-ARR-ClientCert则该值将不会到达 Web 应用程序。如何解决这个问题?

我已将 SSL 设置设置为接受客户端证书。根据本指南,我还将system.webServer/proxy配置字段更改为其他内容,X-ARR-ClientCert但没有成功。

代理正确地传递任何其他标头。

iis arr
  • 1 个回答
  • 2916 Views
Martin Hope
smaglio81
Asked: 2016-08-11 09:26:03 +0800 CST

ARR Web Farm Health Test 发送数百个请求

  • 0

我有一个使用运行状况测试功能 (healthcheck) 的 IIS ARR/Web Farm。测试的设置是每 30 秒检查一次给定的 url。它确实每 30 秒检查一次,但在每次检查期间会发送数百个请求。

有没有人见过这个?你知道如何预防吗?

网络农场配置:

<webFarm name="wf_site.at.your.domain_webservices_crosscampusenrollment" enabled="true">
    <server address="site1.at.your.domain" enabled="true" />
    <server address="site2.at.your.domain" enabled="true" />
    <applicationRequestRouting>
        <protocol timeout="00:00:30" reverseRewriteHostInResponseHeaders="false">
            <cache enabled="false" queryStringHandling="Accept" />
        </protocol>
        <affinity useCookie="true" cookieName="ARRAffinity_site.at.your.domain_webservices_crosscampusenrollment" />
        <loadBalancing algorithm="WeightedRoundRobin" />
        <healthCheck url="http://site.at.your.domain/webservices/CrossCampusEnrollment/healthcheck" />
    </applicationRequestRouting>
</webFarm>

这是IIS 日志的要点。

服务器信息:

Windows Server 2012 R2 Standard - Build 9200
IIS 8.5 - 8.5.9600.16384
URL Rewrite Module 2 - 7.2.2
ARR 3.0 - 3.0.1750
WFF - 1.1.1292
load-balancing iis web-farm healthcheck arr
  • 1 个回答
  • 1321 Views
Martin Hope
Eydun
Asked: 2012-06-16 07:54:46 +0800 CST

应用程序请求路由 (ARR)

  • 0

我正在 Win2008 上安装 IIS,它将支持 PHP 网站。

我不熟悉“应用程序请求路由”。当计划只运行 php-sites 时,安装这个模块是否有意义?

windows-server-2008 iis arr
  • 1 个回答
  • 286 Views
Martin Hope
user418319
Asked: 2012-06-13 01:04:16 +0800 CST

通过地理定位负载平衡 IIS7.5 服务器

  • 2

我在亚洲、欧洲、美国的不同位置有一个网站和 3 台服务器。我是这方面的新手,但我想做的是通过地理定位(如 CDN)实现 ARR 负载平衡。任何人都知道教程如何实现它或从哪里开始?

iis cdn geolocation arr
  • 2 个回答
  • 1460 Views
Martin Hope
rpkelly
Asked: 2010-04-14 11:15:35 +0800 CST

在 80 以外的端口上使用 ARR + IIS 进行负载平衡

  • 3

有没有办法使用 ARR 将请求重新路由到 80/443 以外的端口(分别为默认的 http/https 端口)?我们有几个 Web 应用程序侦听 80 以外的端口,并希望使用 ARR 对它们进行负载平衡。这甚至可能吗?

iis iis-7.5 arr
  • 2 个回答
  • 6698 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve