# Use rewrite /blog to transparently proxy to another app

**URL:** <https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585>\
**Category:** NGINX\
**Created:** [August 2, 2010, 6:11pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585 "2010-08-02T18:11:24Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 2, 2010, 6:11pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/1 "2010-08-02T18:11:24Z")

</div>

Hi,

I have various applications running RoR. In order to improve code  
maintenability I have decided to use a single blog application that will  
be used by different apps.

So a user will be browsing app1 at: [app1.com](http://app1.com)

And when he wants to check out the blog of app1 he goes to:  
[app1.com/blog](http://app1.com/blog) which behind the scene transfer the request to my blog  
engine.

I tried the following:

server {  
…  
location ^~ /blog/ {  
proxy\_set\_header Host $http\_host;  
proxy\_pass [http://blog$uri](http://blog$uri);  
}  
}

But it seems to âˆžly redirect the request.

Thanks for your upload

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 2, 2010, 9:10pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/2 "2010-08-02T21:10:41Z")

</div>

Why in hell does it insist on redirecting?

location /blog/ {  
rewrite /blog/(.+) $1 break;  
proxy\_pass [http://blog](http://blog);  
}

I never understood how nginx handled rewrites.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 2, 2010, 9:14pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/3 "2010-08-02T21:14:08Z")

</div>

Fernando P. wrote:

> Why in hell does it insist on redirecting?
> 
> location /blog/ {  
> rewrite /blog/(.+) $1 break;  
> proxy\_pass [http://blog](http://blog);  
> }
> 
> I never understood how nginx handled rewrites.

My bad, it was my trialing slash rewriter that was conflicting. But now  
how to handle the trialing slash issue? Just deal with it and hope no  
one links to my apps with/without trialing slashes?

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 2, 2010, 10:01pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/4 "2010-08-02T22:01:26Z")

</div>

Sorry for the typos, trialing should read trailing.

Here is the complete thing for those interested, your mileage may vary  
depending how you want the backend app to handle /blog/uri or just /uri

location ^~ /blog/ {  
rewrite /blog/(.+) $1 break;  
proxy\_set\_header Host $http\_host;  
root /optional/root;  
proxy\_pass [http://127.0.0.1:3000/$1](http://127.0.0.1:3000/$1);  
}

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 2, 2010, 10:05pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/5 "2010-08-02T22:05:32Z")

</div>

On Mon, Aug 02, 2010 at 10:01:26PM +0200, Fernando P. wrote:

> }  
> location ^~ /blog/ {  
> proxy\_pass [http://127.0.0.1:3000/](http://127.0.0.1:3000/);  
> proxy\_set\_header Host $http\_host;  
> }

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 3, 2010, 8:45pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/6 "2010-08-03T20:45:54Z")

</div>

How to intercept blog.\*?

I tried setting server\_name blog.\* but it doesn’t seem to work.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 3, 2010, 8:34pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/7 "2010-08-03T20:34:06Z")

</div>

Argh! In practice it doesn’t work, as the urls generated by Rails are  
incorrect. Therefore I need to use subdomains: blog.\* =\> proxy\_pass

I’ll see what I can come up with.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 3, 2010, 8:50pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/8 "2010-08-03T20:50:08Z")

</div>

On Tue, Aug 03, 2010 at 08:45:54PM +0200, Fernando P. wrote:

> How to intercept blog.\*?
> 
> I tried setting server\_name blog.\* but it doesn’t seem to work.

server {  
server\_name blog.\*;  
location / {  
proxy\_pass [http://127.0.0.1:3000](http://127.0.0.1:3000);  
proxy\_set\_header Host $host;  
}  
}

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 11:03am UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/9 "2010-08-05T11:03:51Z")

</div>

Any reason why server\_name blog._; works on my dev machine by only  
catching [http://blog](http://blog)._ and totally fails on my server by catching  
everything?

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 11:33am UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/10 "2010-08-05T11:33:35Z")

</div>

Fernando P. wrote:

> Any reason why server\_name blog._; works on my dev machine by only  
> catching [http://blog](http://blog)._ and totally fails on my server by catching  
> everything?

Update: by setting listen 80 default; to my server that should be  
catching all that wasn’t catched previously it appears that server\_name  
blog.\*; isn’t catching anything at all.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 3, 2010, 9:17pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/11 "2010-08-03T21:17:57Z")

</div>

> > I tried setting server\_name blog.\* but it doesn’t seem to work.
> 
> server {  
> server\_name blog.\*;  
> location / {  
> proxy\_pass [http://127.0.0.1:3000](http://127.0.0.1:3000);  
> proxy\_set\_header Host $host;  
> }  
> }

My bad, it does work. Thank you Igor.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 11:37am UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/12 "2010-08-05T11:37:59Z")

</div>

What the duck?

I switched to Safari, and it works. I was using Firefox, why wouldn’t it  
work previously? Is there some caching going on? That’s pita.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 1:47pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/13 "2010-08-05T13:47:43Z")

</div>

I restarted Firefox and I still can’t access my app at  
[http://blog.example.com](http://blog.example.com)

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 2:03pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/14 "2010-08-05T14:03:01Z")

</div>

On Thu, Aug 05, 2010 at 01:51:26PM +0200, Fernando P. wrote:

> Ok so for some obscure reason, I had to clear my history in Firefox to  
> make things work.
> 
> I still don’t understand why that would perturb Nginx in detecting the  
> blog’s subdomain.

Sorry, we can diagnose a problem using debug/error log.  
We can not diagnose a “it does not work” problem.

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 1:51pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/15 "2010-08-05T13:51:26Z")

</div>

Ok so for some obscure reason, I had to clear my history in Firefox to  
make things work.

I still don’t understand why that would perturb Nginx in detecting the  
blog’s subdomain.

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 6:38pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/16 "2010-08-05T18:38:15Z")

</div>

On Thu, Aug 05, 2010 at 06:31:10PM +0200, Fernando P. wrote:

> > Sorry, we can diagnose a problem using debug/error log.  
> > We can not diagnose a “it does not work” problem.
> 
> What should I be looking for? Specific headers that Firefox was sending?

> **[A debugging log](http://nginx.org/en/docs/debugging_log.html)**

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![fipa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/9e8a1a/32.png) [@fipa](https://www.ruby-forum.com/u/fipa)\
**Post date:** [August 5, 2010, 6:31pm UTC](https://www.ruby-forum.com/t/use-rewrite-blog-to-transparently-proxy-to-another-app/192585/17 "2010-08-05T18:31:10Z")

</div>

> Sorry, we can diagnose a problem using debug/error log.  
> We can not diagnose a “it does not work” problem.

What should I be looking for? Specific headers that Firefox was sending?
