Nginx rewrite host


#1

Hello!

How can I create this rule

If host = 127.0.0.1, 127.0.0.2

Do nothing

If host != 127.0.0.1, 127.0.0.2

Rewrite bla bla bla

Thank you for any help


#2

if ($host != blah.com){
rewrite ^(.*)$ http://blah.com$1 break;
}

From: Glen L.
Sent: Wednesday, February 11, 2009 3:14 PM
To: removed_email_address@domain.invalid
Subject: Nginx rewrite host

Hello!

How can I create this rule

If host = 127.0.0.1, 127.0.0.2

Do nothing

If host != 127.0.0.1, 127.0.0.2

Rewrite bla bla bla

Thank you for any help


#3

Hello!

How can I add 2 or more host?

From: removed_email_address@domain.invalid [mailto:removed_email_address@domain.invalid] On Behalf Of
Kingsley F.
Sent: 11 Februari 2009 15:26
To: removed_email_address@domain.invalid
Subject: Re: Nginx rewrite host

            if ($host != blah.com){
                    rewrite  ^(.*)$ http://blah.com$1 break;
            }

From: Glen L. mailto:removed_email_address@domain.invalid

Sent: Wednesday, February 11, 2009 3:14 PM

To: removed_email_address@domain.invalid

Subject: Nginx rewrite host

Hello!

How can I create this rule

If host = 127.0.0.1, 127.0.0.2

Do nothing

If host != 127.0.0.1, 127.0.0.2

Rewrite bla bla bla

Thank you for any help


#4

if ($host !~* “(blah.com|blah2.com)”) {
rewrite ^(.*)$ http://blah.com$1 break;
}

Reference:
http://wiki.codemongers.com/NginxHttpRewriteModule#if


Tom Pajor


#5

On Wed, Feb 11, 2009 at 10:31:38AM +0100, Tomasz P. wrote:

if ($host !~* “(blah.com|blah2.com)”) {
rewrite ^(.*)$ http://blah.com$1 break;
}

Reference:
http://wiki.codemongers.com/NginxHttpRewriteModule#if

Never! Never use “if” just to test $host.
There is special very optimized directives server/server_name:

 server {
      server_name  blah1.com  blah2.com;
      rewrite  ^   http://blah.com$request_uri;
 }

#6

So from You are saying is should replace:

server {
listen 8080;
location / {
set $my_host $host;
if ($host ~* “(.+.nl.test.com|.+.test.nl|test.nl)”) { rewrite
^ http://nl.test.com$request_uri last; }
proxy_pass http://apps; proxy_set_header Host $my_host;
}
}

with

server {
listen 8080;
server_name *.nl.test.com test.nl *.test.nl;
rewrite ^ http://nl.test.com$request_uri last;
}

yes?


Tom Pajor


#7

On Wed, Feb 11, 2009 at 11:06:17AM +0100, Tomasz P. wrote:

}

with

server {
listen 8080;
server_name *.nl.test.com test.nl *.test.nl;
rewrite ^ http://nl.test.com$request_uri last;
}

yes?

Yes. And “test.nl” and “*.test.nl” can be combined in one “.test.nl”.

Also you do not need
set $my_host $host;

use just
proxy_pass http://apps;
proxy_set_header Host $host;


#8

It’s working if we are redirecting the traffic to onother domain.

But what i need is something like

    if ($host != www.mydomain.com){
        rewrite  ^(.*)$ http://www.mydomain.com$1 break;
    }

Is there any way to do this?


#9

Hello!

On Wed, Jun 10, 2009 at 02:59:15PM +0700, Glen L. wrote:

It’s working if we are redirecting the traffic to onother domain.

But what i need is something like

    if ($host != www.mydomain.com){
        rewrite  ^(.*)$ http://www.mydomain.com$1 break;
    }

Is there any way to do this?

It’s just question of writing correct server{} declarations.

server {
    listen 80 default;
    server_name_in_redirect off;

    rewrite ^ http://www.mydomain.com$request_uri?;
}

server {
    server_name www.mydomain.com;
    ...
}

Maxim D.


#10

Thank’s a lot!

It’s working like a charm