ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: Проксирование адр еса



Я бы тоже так сделал, но сервер этого не позволяет.

Поэтому есть два рабочих варианта:

1)

server {
   server_name user.domain.com;
   location / {
            if ($host ~* "^(\w+)\.domain\.com$") {
                set $uid $1;
                rewrite ^(.*)$ /users/$uid$1 break;
            }

            proxy_set_header Host domain.com;
   }
}

недостаток: сделать какие-либо служебные (не виртуальные) домены третьего 
уровня не
представляется возможным. Жаль, нельзя делать proxy_set_header внутри
if ("proxy_set_header" directive is not allowed here in 
/usr/local/nginx/nginx.conf:45)

2)

server {
   server_name user.domain.com;
   location / {
            if ($host ~* "^(\w+)\.domain\.com$") {
                set $uid $1;
                rewrite ^(.*)$ /users/$uid$1 break;
                proxy_pass http://localhost:80;
            }
   }
}

...

server {
    listen          127.0.0.1:80;
    server_name     localhost;

    location / {
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }
}

недостатки: как-то это громоздко и некрасиво.

> Я бы сделал так:

> server {
>   server_name user.domain.com;
>   location / {
>       set $host domain.com;
>       proxy_pass http://127.0.0.1/users/;
>   }
> }

> Естественно, нужно чтобы на 127.0.0.1 отвечал тот, кого прозрачно
> проксируют.



> ----- Original Message -----
> From: "Igor Askarov" <juks@xxxxxxx>
> To: "Igor Savchenko" <nginx-ru@xxxxxxxxx>
> Sent: Wednesday, September 19, 2007 6:23 PM
> Subject: Проксирование адреса




> Здравствуйте!

> Пытаюсь спроксировать адрес типа user.domain.com на
> domain.com/users/user/

> Пробую так:

> location / {
>          if ($host ~* "^(\w+)\.domain\.com$") {
>                 set $uid $1;
>                 rewrite ^(.*)$ http://domain.com/users/$uid$1;
>          }

> Но так получается редирект, соотвественно в браузере меняется урл с
> bob.domain.ru на domain.ru/users/bob

> Подскажите, как добиться прозрачного проксирования, не редиректа?








-- 
С уважением,
 Igor                          mailto:juks@xxxxxxx




 




Copyright © Lexa Software, 1996-2009.