Quantcast
Channel: Application Request Routing (ARR)
Viewing all 739 articles
Browse latest View live

ARR Disk cache return 200 instead of 304 for cached files

$
0
0

I have a server farm and ARR in front of it. If ARR disk cache is not enabled everything works as expected. Request/responses contain cache control headers, etags and when I click refresh in browser the servers in farm return 304 not modified.

When I enable Disk cache I see the files cached correctly on disk, but when ARR returns data from such disk cache it always answers with HTTP 200 OK instead of 304 not modified so the browsers downloads the same data again!

Here is request response headers when I enable disk cahe and response is served by ARR disk cache

request:

GET /~/media/Images/Catalog/Products/25312_2.png HTTP/1.1
Host: media.whatever.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs-CZ,cs;q=0.8
If-None-Match: b630671342a345bf96d6b471ac578e65
If-Modified-Since: Thu, 22 May 2014 07:29:55 GMT

response:

HTTP/1.1 200 OK
Cache-Control: public, max-age=604800
Content-Type: image/png
Expires: Fri, 20 Jun 2014 10:30:20 GMT
Last-Modified: Thu, 22 May 2014 07:29:55 GMT
Accept-Ranges: bytes
ETag: b630671342a345bf96d6b471ac578e65
Server: Microsoft-IIS/8.5
Content-Disposition: inline; filename="25312_2.png"
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/2.5
Date: Fri, 13 Jun 2014 12:02:24 GMT
Content-Length: 38788

Please note same ETag, same Last-Modified yet it returns HTTP 200

And here is same one when ARR disk cache is disabled and the request hits the backend server which correctly responds with 304

GET /~/media/Images/Catalog/Products/25312_2.png HTTP/1.1
Host: media.whatever.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: cs-CZ,cs;q=0.8
If-None-Match: b630671342a345bf96d6b471ac578e65
If-Modified-Since: Thu, 22 May 2014 07:29:55 GMT
HTTP/1.1 304 Not Modified
Cache-Control: public, max-age=604800
Expires: Fri, 20 Jun 2014 12:07:03 GMT
Last-Modified: Thu, 22 May 2014 07:29:55 GMT
ETag: b630671342a345bf96d6b471ac578e65
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/2.5
Date: Fri, 13 Jun 2014 12:07:03 GMT


I tried to modify IIS static file caching settings on ARR machine, disabled compression but with no difference. 

To me it looks like this should be not related to IIS caching but looks like bug/feature of the the disk cache module as it is the logic of disk cache code to determine the file is in the cache and the etag/date is correct (?)

Anyone has this working correctly? Any tips how to troubleshoot this?


Using ARR to load balance multiple WCF Services

$
0
0

We have a Windows Service hosting a WCF service.  I've been asked if we can have multiple instances of this behind a IIS Server configured with ARR with the goal of providing failover and load balanced support.

Would this provide the solution I'm being asked to provide, namely the failover and load balance support for a WCF Service application.   If not does anybody have any recommended approaches without using dedicated hardware.

 

Custom load balancing decision function

$
0
0

I have several application servers. Each server has its own set of unique resources.

That Servers are not accessible from the public.

I'm trying to set up new publicly accessible server for custom load balancing.

I need to implement custom route decision code that will route request according to the ID of resource not server.

Problem is: i have not found a way to do it in ARR. So for a while i decided to use URL Rewrite Module.

I have created a Custom URL rewrite provider (IRewriteProvider) with idea like that:

     if ResourceID ==1 or 4 then go to ServerInstanceI 1

     if ResourceID ==2 or 8 then go to ServerInstanceI 2

Note1: ResourceID doesn't depend on any UserID

Note2: the ruls can vary in time, so it is actually implemented via some internal table)

In the this thread i was told "Microsoft recommends ARR, instead of raw URL Rewrite module, for load balancing".

Is there any way to do it with ARR? Something like "CustomRouteDecisingProvider"?

Thanks!

ARR Caching

$
0
0

I'm looking at deploying ARR as a caching proxy for a https video portal/O365 videos. Is this a workable solution ? 

arr determine images exist or not

$
0
0

Hello experts,

i used arr 3.0 with iis7.5

i want to set the arr server to determines the images existence in iis server when the request through arr server
if exists ,arr server will passes the request to iis server

or not,it wll goes to cdn url

thanks for everybody help !!

 

 

ARR 3.0 Load Balance Algorithms

$
0
0

Hello all, 

In ARR 3.0 Least Current Request and Least Response Time have been removed. How to achieve same logic with this new version?

Thanks

JS 

ARR Proxy As App Pool Identity

$
0
0

I have done some searching and have been unable to find an answer for this. Here is my setup:

Server1: Windows 2012R2 IIS 8.5 with ARR & URL Rewrite - Reverse proxy to forward any requests to the /API to Server2.

Server2: Windows 2012R2 IIS 8.5 - Hosts the API.

What I am trying to accomplish is to have the calls that ARR routes from server1 to server2 use the app pool account from server1 or another account that I can define instead of the user's identity. Is this possible with ARR as a proxy? 

 

ARR Load Balance Algorithm - Weighted Round Robin not working custom distribution

$
0
0

I used Least Response Time on my ARR implementation. The problem it's that the response time reduces when have more connections (maybe more cached files on IIS memory?) and with that we hav 80% on server 1 and 20% on server 2.

I changed to Weighted Round Robin on all my webfarms, and depending of the scenario, i want to put more weight on selected server. This is not working:

For example, one site that i put to balance in this weight:

90% server 1

5% server 2

5% server 3

In practice, i'm having this:

19,58% server 1

40,16% server 2

40,26% server 3

I have 2 more sites with the same settings that are facing the same problem...

Could anyone help me please? Thanks


502.3 Bad Gateway error for static content

$
0
0

Hello,

I am experiencing a weird problem on my IIS 8.5. 

I have a server farm with two servers in it. The two servers are ASP.NET (MVC + WebAPI) sites running on the same machine, each on its own port (8001 and 8002). 

I have a URL Rewrite rule which is supposed to forward requests aiming at the main site (port 80) to one of the servers, depending on their health status. Now both are marked as healthy.

The rule looks like this (link):

Rule

The problem is that while requests which end up being processed by ASP.NET (MVC or WebAPI), ie. one of my controllers, are fine, requests which ask for a static content fail with502.3 Bad Gateway response (link):

Static content error response

I enabled Failed request tracing, but I could not see much in the resulting log. Here is the part where the error status code is mentioned:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/><EventID>0</EventID><Version>1</Version><Level>5</Level><Opcode>1</Opcode><Keywords>0x100</Keywords><TimeCreated SystemTime="2015-12-05T20:34:11.468Z"/><Correlation ActivityID="{8010524E-0000-2A00-B63F-84710C7967BB}"/><Execution ProcessID="15296" ThreadID="7472"/><Computer>VENUSE</Computer></System><EventData><Data Name="ContextId">{8010524E-0000-2A00-B63F-84710C7967BB}</Data><Data Name="ModuleName">ApplicationRequestRouting</Data><Data Name="Notification">128</Data><Data Name="fIsPostNotification">false</Data></EventData><RenderingInfo Culture="en-US"><Opcode>NOTIFY_MODULE_START</Opcode><Keywords><Keyword>RequestNotifications</Keyword></Keywords><freb:Description Data="Notification">EXECUTE_REQUEST_HANDLER</freb:Description></RenderingInfo><ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace"><EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid></ExtendedTracingInfo></Event><Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/><EventID>0</EventID><Version>1</Version><Level>4</Level><Opcode>3</Opcode><Keywords>0x800</Keywords><TimeCreated SystemTime="2015-12-05T20:34:11.468Z"/><Correlation ActivityID="{8010524E-0000-2A00-B63F-84710C7967BB}"/><Execution ProcessID="15296" ThreadID="7472"/><Computer>VENUSE</Computer></System><EventData><Data Name="ContextId">{8010524E-0000-2A00-B63F-84710C7967BB}</Data></EventData><RenderingInfo Culture="en-US"><Opcode>ARR_REQUEST_HEADERS_START</Opcode><Keywords><Keyword>RequestRouting</Keyword></Keywords></RenderingInfo><ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace"><EventGuid>{53AE50FA-81DF-47B1-8161-71F0A1C55A48}</EventGuid></ExtendedTracingInfo></Event><Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/><EventID>0</EventID><Version>1</Version><Level>3</Level><Opcode>16</Opcode><Keywords>0x100</Keywords><TimeCreated SystemTime="2015-12-05T20:34:13.733Z"/><Correlation ActivityID="{8010524E-0000-2A00-B63F-84710C7967BB}"/><Execution ProcessID="15296" ThreadID="7472"/><Computer>VENUSE</Computer></System><EventData><Data Name="ContextId">{8010524E-0000-2A00-B63F-84710C7967BB}</Data><Data Name="ModuleName">ApplicationRequestRouting</Data><Data Name="Notification">128</Data><Data Name="HttpStatus">502</Data><Data Name="HttpReason">Bad Gateway</Data><Data Name="HttpSubStatus">3</Data><Data Name="ErrorCode">2147954407</Data><Data Name="ConfigExceptionInfo"></Data></EventData><RenderingInfo Culture="en-US"><Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode><Keywords><Keyword>RequestNotifications</Keyword></Keywords><freb:Description Data="Notification">EXECUTE_REQUEST_HANDLER</freb:Description></RenderingInfo><ExtendedTracingInfo xmlns="http://schemas.microsoft.com/win/2004/08/events/trace"><EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid></ExtendedTracingInfo></Event>


Why is the behavior different for static vs. dynamic content and what can I do about that?

Thank you.

Best regards,

Stanislav Kurik

Setup Reverse Proxy in IIS 8.5

$
0
0

Hi,

I'm not sure if I'm in the right place, but I have a website that I use for my web software. For example, I have Emby for the media server, and uTorrent for the web based torrent downloader. The problem is I would have to type in the port number to access them, and I need to port forward each port. Is there a way that I can reverse proxy all of them through IIS on one port? I want to be able to access the website on example.com for the main page, example.com/emby for the Emby server, and example.com/utorrent for the uTorrent server. Thank you for your help,

ARR 3.0 WarmuPp, Trickle, or RampUp feature or options?

$
0
0

I use ARR for dynamic websites and not content caching. The issue I'm having is that if I take an application server offline for maintenance and then bring it back into the pool, the server gets slammed with new traffic. I run 500+ websites through the ARR servers and bringing that traffic up all at once with Weighted Round Robin can crash the application server I just brought back into the pool. 

In version 2, I would switch to the Least Response Time load balancing algorithm for this very purpose. A few requests would hit the new server, respond slowly, and the rest would get routed to the other active servers. It was great for that purpose, slowly ramping up traffic,  but they removed it.  My application servers need time to warm their own caches and load applications etc.

I'd love to have some type of trickle or ramp-up feature. What are others doing to bring application servers back into the pool without slamming them?

RPC error

$
0
0

I have an RDS server which sits behind an IIS ARR 3 server. I'm running Windows Server 2012 R2 on all my servers and I am running IIS ARR 3.01.1952 and also have the URL Rewriting Module 2 (version 7.2.1952) installed. I also have Exchange behind the IIS ARR server.

I have been accessing my RDS and Exchange server via the IIS ARR server from the internet for weeks now with no issues. Everything works such as: OWA, Autodiscover, ActiveSync and accessing RemoteApps/Desktop from a browser.

Yesterday I installed the Microsoft Android Remote Desktop Client on my phone and couldn't get past adding the Remote Resources on my phone while connected to the internet. When I connected my phone to the internal Wifi (so I wouldn't be accessing RDS via IIS ARR) I could successfully add the Remote Reources on my phone and could access them no problem. So as a test I changed the firewall rule to temporarily allow my phone to access the RDS Remote Resources directly (therefore bypassing the IIS ARR server) and I could (again) access the RDS servers Remote Resources with no issues. Once I changed the firewall rule to point to the IIS ARR server again the Remote Resources on my Android phone failed when I tried to launch them in the Android Remote Desktop Client.

In the IIS logs on the IIS ARR server I can see this error:

2015-12-16 11:31:20 192.168.0.87 RPC_IN_DATA /rpc/rpcproxy.dll localhost:3388 443 - 185.3.54.12 MSRPC - 404 0 2 89
2015-12-16 11:31:20 192.168.0.87 RPC_OUT_DATA /rpc/rpcproxy.dll localhost:3388 443 - 185.3.54.12 MSRPC - 404 0 64 87

I have set the Request Filtering filter limit to 2147483648 but this didn't help. I followed the following article when setting up the IIS ARR server:

http://blogs.technet.com/b/exchange/archive/2013/07/19/reverse-proxy-for-exchange-server-2013-using-iis-arr-part-1.aspx

Can someone help please as I am out of ideas! Everything works using the IIS ARR server except the Android Remote Resources using MS Remote Desktop.

Thank you!

IIS with ARR times out

$
0
0

Hello,

I decided to try out a local load balancing using my IIS together with ARR. Unfortunately, it is not working as I expected and searching information on-line doesn't really help me trace the real issue. I have the following scenario:

- I create a site, Site1, on port 8011, no host. The site points to a folder with index.html with simple Hello world heading.
- I create a site SiteLB on port 80 with host my.site.local.
- I create a server farm and add one server to on port 8011. I create a global rewrite rule to send requests from {HTTP_HOST} = my.site.local to my farm.

I don't touch any other settings on my farm. When I try to make a request to http://my.site.local I get 502.3 time out. If I check the failed requests I see that 3 request have been made to Site1 and all of them failed with 400.604 - the connection forcibly closed after ~30secs. This makes the request to the my.site.local to fail with 502.3. I have not idea why there are three requests there. The default time-out is 30secs.

Does anyone have any idea about this? To me it seems pretty straight-forward what I do, but apparently there is something else to think about :-) I am using Windows 10.

ARR Locks up when multiple sites using same port

$
0
0

Two WCF services installed and configured to be accessed with the same port using ARR rules can cause ARR to completely stop functioning if one service is making calls to the other service.

We have a real-life scenario with our company's applications in which we are seeing this issue but I have reproduced it with two simple WCF services and a console application.  This simple example may not seem to make a lot of sense as far as functionality, but it is simulating the way our UI and services are configured.

Service 1 represents our main application service.  Service1 has one method called CoreMethod.  This method represents any method that Service 2 may need to call while it is starting up (in reality it calls several different methods).  The method simply sleeps for 200 ms to simulate our main application doing something.

        public string CoreMethod()
        {
            Thread.Sleep(2000);
            return "stuffneeded";
        }

Service 2 represents a middle tier service for one of our applications.  It has a method called GetData which represents any middle tier method that might be called from the UI or another middle tier.  The GetData method calls a private method in Service 1 code, EnsureServiceInitialized, which simulates the initialization of the middle tier which occurs on the first call, when the service is activated.  It locks so that only the first call will cause it to do anything.  Any subsequent calls will simply wait for the initialization to complete, and then proceed.  The EnsureServiceInitialized method will make 10 calls to the Service1 CoreMethod, simulating what happens when a middle tier is activated.

        private static bool serviceInitialized = false;
        private static object lockObj = new object();

        public string GetData(int value)
        {
            EnsureServiceInitialized();
            Thread.Sleep(200);
            return string.Format("You entered: {0}", value);
        }
        private static void EnsureServiceInitialized()
        {
            lock(lockObj)
            {
                if (serviceInitialized)
                    return;
                service1.Service1 service = new service1.Service1();
                for (int i = 0; i < 10; i++)
                    Task.Run(() => service.CoreMethod()).Wait();
                serviceInitialized = true;
            }
        }

The console app makes 10 simultaneous calls to Service2, and then waits for them all to complete.  This is simulating one of our complex UI screens being run.

        static void Main(string[] args)
        {
            completedCalls = new System.Collections.Concurrent.BlockingCollection<int>();
            are = new AutoResetEvent(false);
            service2.Service2 service = new service2.Service2();
            service.GetDataCompleted += Program.service_GetDataCompleted;
            service.GetDataAsync(1, true, 1);
            service.GetDataAsync(2, true, 2);
            service.GetDataAsync(3, true, 3);
            service.GetDataAsync(4, true, 4);
            service.GetDataAsync(5, true, 5);
            service.GetDataAsync(6, true, 6);
            service.GetDataAsync(7, true, 7);
            service.GetDataAsync(8, true, 8);
            service.GetDataAsync(9, true, 9);
            service.GetDataAsync(10, true, 10);
            are.WaitOne();
        }
        public static void service_GetDataCompleted(object sender, service2.GetDataCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                Console.WriteLine("Error: " + e.Error.Message);
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
                throw e.Error;
            }
            completedCalls.Add((int)e.UserState);
            if(completedCalls.Count.Equals(10))
                are.Set();
        }

When each of the two services is accessed normally (using hostname:port of the actual websites), everything works fine.  However, when configured in ARR the way we want them configured, it can cause ARR to completely lock up, requiring a restart of the Servce 2 Application Pool.

Here is the configuration:

Service 1 is installed as an IIS website, using port 50004.

Service 2 is installed as in IIS website, using port 50005.

ARR Server farm created for Service 1, with one Server, using port 50004.

ARR Server farm created for Service 2, with one Server, using port 50005.

Global URL Rewrite Rule looking for {SERVER_PORT} = 50000, and the pattern ^Service1/(.*).  This rule will Route to the Server farm for Service 1, using the path (/{R:1}, stripping the "Service1/" out of the url.

Global URL Rewrite Rule looking for {SERVER_PORT} = 50000, and the pattern ^Service2/(.*).  This rule will Route to the Server farm for Service 2, using the path (/{R:1}, stripping the "Service2/" out of the url.

Service 2 is configured to access Server 1 using the url http://localhost:50000/Service1/Service1.svc.

The Console application is configured to access Server 2 using the url http://localhost:50000/Service2/Service2.svc.

This is the behavior I am seeing:

  • If I have the console app make one call only to Service 2 (with it not already running), it works as expected.
  • If I have the console app make 10 calls to Service2 (with it not already running), it fails with the same symptoms we are seeing in our applications.  ARR completely locks up, and no calls are processed.  I can't even browse to either one of the services using the direct url at this point.
  • If I start up Service 2 successfully by running the console app with one call first, and then try to run it with 10 calls, it works as expected.
  • When I just hit both services directly, bypassing ARR, everything works (1 or 10 calls).

I believe at this point that there is an ARR bug causing some sort of deadlock.  I have seen that there have been similar ARR bugs in the past with the exact same symptoms.  Of course, there is a chance I just have a problem with my configuration that is causing the issue.  I would prefer that to be the case, because I could then fix it myself.

Does anybody have any idea what could be wrong, and what I could do to resolve this?

New to ARR, trying to understand

$
0
0

I run a solo developer shop and I'm presently in the middle of setting up a small new internal network. I'm using a Hyper-V 2012 R2 host with Server 2012 R2 guests for my Exchange, SharePoint and TFS installations. I'm using a single DSL modem/router as supplied by my ISP, w/DHCP handled by my Essentials 2012 R2 PDC.

Am I correct in my understanding that I can configure ARR to route incoming requests to the appropriate host and port, depending on the URL of the request?

For example, let's say I have these public subdomains, all pointing to my single public IP address on the WAN side of the router:

office.domain.com
mail.domain.com
sharepoint.domain.com
tfs.domain.com

These will all come in on ports 80/443 and the router will forward them indiscriminately to the internal IIS hostreceiver.domain.local, which via ARR will parse out the URLs and relay the requests back and forth to/from the appropriate hosts, e.g.:

office.domain.local
exchange.domain.local
sharepoint.domain.local:8081
tfs.domain.local:8082

And the outside connecting browser will display simply *.domain.com in its address bar (no port), being none the wiser that different internal resources (and ports) are being accessed.

Have I got this right?

Thanks,
Jeff Bowman
Fairbanks, Alaska


ARR Makes Access denied for App_Data dir

$
0
0

I have two application servers(IIS, ASP.NET), they are connected by Ethernet, one of them has a dedicated IP address. Each of them receives some data, makes background calculations, and then sends the response back. The load on them will be small, about 30-40 users.

I installed arr and created a server farm, tests from monitoring and managment showed pass for URL. But I had a problem with access to write to the disk in my web app - access denied for App_Data folder.

Where i can fix it?

ARR 3.0 with exchange 2013

$
0
0

I have configured ARR 3.0 with exchange 2013 , created the server farm setup the URL rewrite rule and also point the webmail IP to ARR server IP . But the request is not going through i m getting 502.4 bad gateway error. I m pulling my hair but not finding anything for that. Please help me.

I have also copied the failed request tracing log if that can help

<div class="expand-collapse-all">-Collapse</div>
Complete Request Trace
<div class="duration">0 ms</div> 1. -GENERAL_REQUEST_START<div id="section_detail_1_details">
SiteId1
AppPoolIdDefaultAppPool
ConnId1610612752
RawConnId0
RequestURLhttps://email.bwinopslab.com:443/owa
RequestVerbGET
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>2. -URL_REWRITE_START<div id="section_detail_2_details">
RequestURL/owa
ScopeGlobal
TypeInbound
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>3. -RULE_EVALUATION_START<div id="section_detail_3_details">
RuleNameARR_email.bwinopslab.com
RequestURLowa
QueryString
PatternSyntaxWildcard
StopProcessingtrue
RelativePath/
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>4. -PATTERN_MATCH<div id="section_detail_4_details">
Pattern*
Inputowa
Negatefalse
Matchedtrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>5. -CONDITIONS_EVALUATION_START<div id="section_detail_5_details">
LogicalGroupingMatchAll
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>6. -CONDITION_EVALUATION<div id="section_detail_6_details">
Input{HTTPS}
ExpandedInputon
MatchTypePattern
Patternon
Negatefalse
Succeededtrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>7. -CONDITION_EVALUATION<div id="section_detail_7_details">
Input{HTTP_HOST}
ExpandedInputemail.bwinopslab.com
MatchTypePattern
Patternemail.bwinopslab.com
Negatefalse
Succeededtrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>8. -CONDITIONS_EVALUATION_END<div id="section_detail_8_details">
Succeededtrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>9. -REWRITE_ACTION<div id="section_detail_9_details">
Substitutionhttps://Email.bwinopslab.com/{R:0}
RewriteURLhttps://Email.bwinopslab.com/owa
AppendQueryStringtrue
LogRewrittenURLfalse
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>10. -RULE_EVALUATION_END<div id="section_detail_10_details">
RuleNameARR_email.bwinopslab.com
RequestURLhttps://Email.bwinopslab.com/owa
QueryString
StopProcessingtrue
Succeededtrue
</div>
<div class="duration">0 ms</div> <div class="severity-warning">Warning</div>11. -REWRITE_DISABLED_KERNEL_CACHE<div id="section_detail_11_details"></div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>12. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_12_details">
HeaderNameX-Original-URL
HeaderValue/owa
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>13. -URL_CHANGED<div id="section_detail_13_details">
OldUrl/owa
NewUrlhttps://Email.bwinopslab.com/owa
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>14. -URL_REWRITE_END<div id="section_detail_14_details">
RequestURLhttps://Email.bwinopslab.com/owa
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>15. -GENERAL_ENDPOINT_INFORMATION<div id="section_detail_15_details">
RemoteAddress10.255.78.26
RemotePort50490
LocalAddress10.255.78.26
LocalPort443
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>16. -GENERAL_REQUEST_HEADERS<div id="section_detail_16_details">
HeadersConnection: Keep-Alive Accept: text/html, application/xhtml+xml, */* Accept-Encoding: gzip, deflate Accept-Language: en-US Host: email.bwinopslab.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko X-Original-URL: /owa
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>17. -GENERAL_GET_URL_METADATA<div id="section_detail_17_details">
PhysicalPath
AccessPerms513
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>18. -USER_SET<div id="section_detail_18_details">
AuthType
UserName
SupportsIsInRoletrue
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>19. -ARR_WEBFARM_ROUTED<div id="section_detail_19_details">
WebFarmEmail.bwinopslab.com
AlgorithmWeightedRoundRobin
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>20. -HANDLER_CHANGED<div id="section_detail_20_details">
OldHandlerName
NewHandlerNameApplicationRequestRoutingHandler
NewHandlerModulesApplicationRequestRouting
NewHandlerScriptProcessor
NewHandlerType
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>21. -ARR_SERVER_ROUTED<div id="section_detail_21_details">
RoutingReasonLoadBalancing
ServerBRMWT-EXCAS11.BWINOPSLAB.COM
StateActive
TotalRequests1
FailedRequests0
CurrentRequests1
BytesSent0
BytesReceived0
ResponseTime0
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>22. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_22_details">
HeaderNameMax-Forwards
HeaderValue10
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>23. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_23_details">
HeaderNameX-Forwarded-For
HeaderValue10.255.78.26:50490
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>24. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_24_details">
HeaderNameX-ARR-SSL
HeaderValue4096|256|DC=com, DC=bwinopslab, CN=bwinopslab-BRMWT-CA02-CA|C=us, S=co, L=broomfield, O=brocade, OU=IT, CN=email.bwinopslab.com
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>25. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_25_details">
HeaderNameX-ARR-ClientCert
HeaderValue
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>26. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_26_details">
HeaderNameX-ARR-LOG-ID
HeaderValue6ac5f85f-63ed-4aba-b417-23cdcceec740
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>27. -GENERAL_SET_REQUEST_HEADER<div id="section_detail_27_details">
HeaderNameConnection
HeaderValue
Replacetrue
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>28. -URL_CHANGED<div id="section_detail_28_details">
OldUrlhttps://Email.bwinopslab.com/owa
NewUrl/owa
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>29. -ARR_REQUEST_HEADERS_START<div id="section_detail_29_details"></div>
<div class="duration">78 ms</div>30. -GENERAL_SEND_CUSTOM_ERROR<div id="section_detail_30_details">
HttpStatus502
HttpSubStatus3
FileNameOrURL502.htm
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>31. -GENERAL_FLUSH_RESPONSE_START<div id="section_detail_31_details"></div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>32. -GENERAL_RESPONSE_HEADERS<div id="section_detail_32_details">
HeadersCache-Control: private Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/8.5
</div>
<div class="duration">0 ms</div> <div class="severity-verbose">Verbose</div>33. -GENERAL_RESPONSE_ENTITY_BUFFER<div id="section_detail_33_details">
Buffer<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 8.5 Detailed Error - 502.3 - Bad Gateway</title> <style type="text/css"><!-- body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;} code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;} .config_source code{font-size:.8em;color:#000000;} pre{margin:0;font-size:1.4em;word-wrap:break-word;} ul,ol{margin:10px 0 10px 5px;} ul.first,ol.first{margin-top:5px;} fieldset{padding:0 15px 10px 15px;word-break:break-all;} .summary-container fieldset{padding-bottom:5px;margin-top:4px;} legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;} legend{color:#333333;;margin:4px 0 8px -12px;_margin-top:0px; font-weight:bold;font-size:1em;} a:link,a:visited{color:#007EFF;font-weight:bold;} a:hover{text-decoration:none;} h1{font-size:2.4em;margin:0;color:#FFF;} h2{font-size:1.7em;margin:0;color:#CC0000;} h3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;} h4{font-size:1.2em;margin:10px 0 5px 0; }#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",Verdana,sans-serif; color:#FFF;background-color:#5C87B2; }#content{margin:0 0 0 2%;position:relative;} .summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} .content-container p{margin:0 0 10px 0; }#details-left{width:35%;float:left;margin-right:2%; }#details-right{width:63%;float:left;overflow:hidden; }#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF; background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:1px solid #4A6C8E;font-weight:normal; font-size:1em;color:#FFF;text-align:right; }#server_version p{margin:5px 0;} table{margin:4px 0 4px 0;width:100%;border:none;} td,th{vertical-align:top;padding:3px 0;text-align:left;font-weight:normal;border:none;} th{width:30%;text-align:right;padding-right:2%;font-weight:bold;} thead th{background-color:#ebebeb;width:25%; }#details-right th{width:20%;} table tr.alt td,table tr.alt th{} .highlight-code{color:#CC0000;font-weight:bold;font-style:italic;} .clear{clear:both;} .preferred{padding:0 5px 2px 5px;font-weight:normal;background:#006633;color:#FFF;font-size:.8em;} --> </style> </head> <body> <div id="content"> <div class="content-container"> <h3>HTTP Error 502.3 - Bad Gateway</h3> <h4>A security error occurred </h4> </div> <div class="content-container"> <fieldset><h4>Most likely causes:</h4> <ul> %09<li>The CGI application did not return a valid set of HTTP errors.</li> %09<li>A server acting as a proxy or gateway was unable to process the request due to an error in a parent gateway.</li> </ul> </fieldset> </div> <div class="content-container"> <fieldset><h4>Things you can try:</h4> <ul> %09<li>Use DebugDiag to troubleshoot the CGI application.</li> %09<li>Determine if a proxy or gateway is responsible for this error.</li> </ul> </fieldset> </div> <div class="content-container"> <fieldset><h4>Detailed Error Information:</h4> <div id="details-left"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="alt"><th>Module</th><td>&nbsp;&nbsp;&nbsp;ApplicationRequestRouting</td></tr><tr><th>Notification</th><td>&nbsp;&nbsp;&nbsp;ExecuteRequestHandler</td></tr> <tr class="alt"><th>Handler</th><td>&nbsp;&nbsp;&nbsp;ApplicationRequestRoutingHandler</td></tr> <tr><th>Error Code</th><td>&nbsp;&nbsp;&nbsp;0x80072f8f</td></tr> </table> </div><div id="details-right"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="alt"><th>Requested URL</th><td>&nbsp;&nbsp;&nbsp;https://email.bwinopslab.com:443/owa</td></tr> <tr><th>Physical Path</th><td>&nbsp;&nbsp;&nbsp;C:\inetpub\wwwroot\owa</td></tr><tr class="alt"><th>Logon Method</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> <tr><th>Logon User</th><td>&nbsp;&nbsp;&nbsp;Anonymous</td></tr> <tr class="alt"><th>Request Tracing Directory</th><td>&nbsp;&nbsp;&nbsp;C:\inetpub\logs\FailedReqLogFiles</td></tr></table> <div class="clear"></div> </div> </fieldset> </div> <div class="content-container"> <fieldset><h4>More Information:</h4> This error occurs when a CGI application does not return a valid set of HTTP headers, or when a proxy or gateway was unable to send the request to a parent gateway. You may need to get a network trace or contact the proxy server administrator, if it is not a CGI problem. <p><a href="http://go.microsoft.com/fwlink/?LinkID=62293&amp;IIS70Error=502,3,0x80072f8f,9600">View more information&raquo;</a></p> </fieldset> </div> </div> </body> </html>
</div>
<div class="duration">0 ms</div> <div class="severity-informational">Informational</div>34. -GENERAL_FLUSH_RESPONSE_END<div id="section_detail_34_details">
BytesSent5077
ErrorCodeThe operation completed successfully. (0x0)
</div>
<div class="duration">0 ms</div>35. -GENERAL_REQUEST_END<div id="section_detail_35_details">
BytesSent5077
BytesReceived258
HttpStatus502
HttpSubStatus3
</div>

Rules trouble, TERRIBLE at RegEx

$
0
0

Figure out RegEx? You might as well ask me to count the stars.

Here's what I'm trying to do on server4:

  1. Forward office.domain.com/tfs to server3:8080/tfs
  2. Forward office.domain.com/app1 to server3:81
  3. Forward office.domain.com/app2 to server3:82
  4. Forward office.domain.com to server2
  5. Forward mail.domain.com to server3

I've got #1 working—couldn't get anything else to run alongside it—but that's only because presently it's the only rule. It's got the default (.*) for its expression, which if I'm right I suspect covers just about everything.

To further complicate matters, server2 is a Server Essentials (WSE) installation. It's already got its own cert foroffice.domain.com; the bundled application over there takes http requests and redirects them to https. It also redirectsoffice.domain.com to office.domain.com/remote. There's no way to change this out-of-the box behavior without mucking things up (VPN integration, RDP tunneling, etc.).

Is there hope for justice in the world?

Thanks,
Jeff Bowman
Fairbanks, Alaska

Configuring ARR3.0 with Windows Server Essentials and Exchange 2016

$
0
0

I seem to be having a lot of issues trying to get ARR3.0 to work with Essentials. Does anyone have a walkthrough for ARR3. There are earlier version walkthroughs but seems to be none for 3.0. Issue I am having is that I setup the server farms and let ARR do the default url rewrites and everything seems to work but ARR breaks the anywhere access. When you log in you do not get any of the images and the page renders incorrectly. How do you tell ARR that all subdirectories are available? If I remove the server farms then anywhere access is fine, but I then have no routing to the Exchange box. I'm guessing this is a simple fix but it is doing my head in.

Any help would be greatly appreciated

The best solution for my issue...

$
0
0

I have a two part question and I'm hoping to get some answers. First off, let me start by explaining my current environment. I am running a 2012 R2 Datacenter DC/VMHost. I have a 2010 Exchange server (VM) running on 2008 R2 and a PBX server (VM) running on 2012 R2 Std. I need both servers to respond to requests on port 80 specifically. The PBX server will need to respond to multiple requests from different subdomains which will be different tenants (ie pbx.*****.com, pbx1.*****.com and so forth). I currently have my firewall pointing all HTTP and HTTPS traffic to the exchange server. So my questions are: Is a reverse proxy what I need? And if so, how do I configure it? ( I have done quite a bit of reading and all I've done is broken my connection to my exchange server from outside my network). And my second question is: What is the difference in a reverse proxy setup and a full ARR setup?? Sorry, if this has been answered but I need to get this issue resolved. Thanks for your support!

Viewing all 739 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>