# Reverse proxy and rewrite. Need help!

**URL:** <https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635>\
**Category:** NGINX\
**Created:** [March 5, 2010, 3:18pm UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635 "2010-03-05T15:18:17Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![blitter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9f8e36/32.png) [@blitter](https://www.ruby-forum.com/u/blitter)\
**Post date:** [March 5, 2010, 3:18pm UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635/1 "2010-03-05T15:18:17Z")

</div>

Hey ,

I have two domains, [domain.net](http://domain.net) and [domain.com](http://domain.com) and considering the  
expected lack of IP addresses I want to setup a sites hub/reverse proxy.  
Nginx 0.7.6x is installed on a debian 5.x box and works fine so far. Now  
Iâ€™m stuck with this 4 cases scenario:

1. [www.domain.net](http://www.domain.net) ----\> nginx ------(no rewrite)------\>  
[internal-www.domain.net](http://internal-www.domain.net) box  
Nginx should pass the whole url to the internal box. Hereâ€™s my config  
server {  
listen 80;  
server\_name [www.domain.net](http://www.domain.net);

#charset koi8-r;

access\_log logs/www.domain.net.access.log;

location / {  
proxy\_pass [http://internal-www.domain.net](http://internal-www.domain.net);  
proxy\_redirect off;  
proxy\_set\_header Host $host;  
proxy\_set\_header X-Real-IP $remote\_addr;  
proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;  
}

1. [www.domain.com](http://www.domain.com) ----\> nginx ------(rewrite)------\>  
[internal-com.domain.net](http://internal-com.domain.net) box  
nginx should rewrite the base url ([http://www.domain.com](http://www.domain.com) to  
[http://com.domain.net](http://com.domain.net) before passing it to the internal box)  
ex : [Website Domains Names & Hosting | Domain.com](http://www.domain.com/index.html) rewritten to  
[http://com.domain.net/index.html](http://com.domain.net/index.html) and send to the box

2. [pub.domain.net/alias1](http://pub.domain.net/alias1) ----\> nginx ------(rewrite)------\>  
[internal-pub.domain.net](http://internal-pub.domain.net) box  
nginx should rewrite the url to remove the â€œ/alias1â€ part before passing  
it to the internal box (which is a drupal siteâ€¦).  
ex : [http://pub.domain.net/alias1/index.php](http://pub.domain.net/alias1/index.php) rewritten to  
[http://pub.domain.net/index.php](http://pub.domain.net/index.php) and send to the box

3. [pub.domain.net/alias2](http://pub.domain.net/alias2) ----\> nginx ------(rewrite)------\>  
[internal-alias2.domain.net](http://internal-alias2.domain.net) box  
nginx should rewrite the url from [pub.domain.net/alias2](http://pub.domain.net/alias2) to  
[alias2.domain.net](http://alias2.domain.net) part before passing it to the internal box  
ex: [http://pub.domain.net/alias2](http://pub.domain.net/alias2) rewritten to [http://alias2.domain.net](http://alias2.domain.net)  
and send to the box.

After some hair pulling, a lot of â€œShould I use proxy\_pass or  
proxy\_redirect ?â€ and â€œis drupal messing with somethingâ€, any help would  
be really appreciated.

Thanks

Blitter

---

<div class="post-metadata">

**Author:** ![blitter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9f8e36/32.png) [@blitter](https://www.ruby-forum.com/u/blitter)\
**Post date:** [March 5, 2010, 3:32pm UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635/2 "2010-03-05T15:32:50Z")

</div>

On Fri, Mar 05, 2010 at 03:18:17PM +0100, Da Blitter wrote:

> server {  
> proxy\_set\_header Host $host;
> 
> [alias2.domain.net](http://alias2.domain.net) part before passing it to the internal box  
> ex: [http://pub.domain.net/alias2](http://pub.domain.net/alias2) rewritten to [http://alias2.domain.net](http://alias2.domain.net)  
> and send to the box.
> 
> After some hair pulling, a lot of â€œShould I use proxy\_pass or  
> proxy\_redirect ?â€ and â€œis drupal messing with somethingâ€, any help would  
> be really appreciated.

proxy\_set\_header Host $host;  
proxy\_set\_header X-Real-IP $remote\_addr;  
proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;

server {  
server\_name [www.domain.net](http://www.domain.net);  
location / {  
proxy\_pass [http://internal-www.domain.net](http://internal-www.domain.net);  
}  
}

server {  
server\_name [www.domain.com](http://www.domain.com);  
location / {  
proxy\_pass [http://internal-com.domain.net](http://internal-com.domain.net);  
}  
}

server {  
server\_name [pub.domain.net](http://pub.domain.net);  
location /alias1/ {  
proxy\_pass [http://internal-pub.domain.net/](http://internal-pub.domain.net/);  
}  
location /alias2/ {  
proxy\_pass [http://internal-alias2.domain.net/](http://internal-alias2.domain.net/);  
}  
}

–  
Igor S.  
[http://sysoev.ru/en/](http://sysoev.ru/en/)

---

<div class="post-metadata">

**Author:** ![blitter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9f8e36/32.png) [@blitter](https://www.ruby-forum.com/u/blitter)\
**Post date:** [March 5, 2010, 3:36pm UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635/3 "2010-03-05T15:36:20Z")

</div>

On Fri, Mar 05, 2010 at 05:32:11PM +0300, Igor S. wrote:

> > [internal-www.domain.net](http://internal-www.domain.net) box  
> > proxy\_pass [http://internal-www.domain.net](http://internal-www.domain.net);  
> > ex : [http://www.domain.com/index.html](http://www.domain.com/index.html) rewritten to  
> > [internal-alias2.domain.net](http://internal-alias2.domain.net) box  
> > nginx should rewrite the url from [pub.domain.net/alias2](http://pub.domain.net/alias2) to  
> > [alias2.domain.net](http://alias2.domain.net) part before passing it to the internal box  
> > ex: [http://pub.domain.net/alias2](http://pub.domain.net/alias2) rewritten to [http://alias2.domain.net](http://alias2.domain.net)  
> > and send to the box.
> > 
> > After some hair pulling, a lot of â€œShould I use proxy\_pass or  
> > proxy\_redirect ?â€ and â€œis drupal messing with somethingâ€, any help would  
> > be really appreciated.
> 
> proxy\_set\_header Host $host;

“Host” is probably is not needed.

> server {  
> }  
> location /alias2/ {  
> proxy\_pass [http://internal-alias2.domain.net/](http://internal-alias2.domain.net/);  
> }  
> }

Also you should not disable proxy\_redirect, if backend send such  
redirects:  
Location: [http://internal-www.domain.net/some/url](http://internal-www.domain.net/some/url)  
Location: [http://internal-pub.domain.net/another/url](http://internal-pub.domain.net/another/url)

–  
Igor S.  
[http://sysoev.ru/en/](http://sysoev.ru/en/)

---

<div class="post-metadata">

**Author:** ![blitter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9f8e36/32.png) [@blitter](https://www.ruby-forum.com/u/blitter)\
**Post date:** [March 8, 2010, 10:17am UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635/4 "2010-03-08T10:17:32Z")

</div>

location /alias2/ {

# proxy\_set\_header Host $host;

proxy\_set\_header X-Real-IP $remote\_addr;  
proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;  
proxy\_pass [http://alias2.domain.net/](http://alias2.domain.net/);  
proxy\_redirect default;  
}

When I type [http://pub.domain.net/alias2](http://pub.domain.net/alias2) in a browser, I can reach the  
backend machine with this url but the displayed page is messy. Is there  
any way to rewrite/force the url in the browser ?

Blitter

---

<div class="post-metadata">

**Author:** ![blitter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/9f8e36/32.png) [@blitter](https://www.ruby-forum.com/u/blitter)\
**Post date:** [March 5, 2010, 5:24pm UTC](https://www.ruby-forum.com/t/reverse-proxy-and-rewrite-need-help/184635/5 "2010-03-05T17:24:02Z")

</div>

Thanks for your help Igor.

I still have some issues but I’ll make some new tries on monday.

Blitter
