Re: nginx rewrite

2010-05-21 Пенетрантность Игорь Чумак

Andrey Melnikoff пишет:

Игорь Чумак ichumak2...@gmail.com wrote:
  

Andrey Melnikoff пишет:


Игорь Чумак ichumak2...@gmail.com wrote:
  
  

Добрый день!



[...]

  
  
Нет ли способа на лету (средствами nginx естественно) перекодировать 
ответ сервера?



из чего в что ?
  

Сорри, неясно выразился.
Пример:



  

nginx получил запрос:
http://nginx_ip/wiki//test.php



  

Передал его на backend http://192.168.0.251/



а зачем он его туда направил ? Есле тебе надо /wiki/ - то и делай location
/wiki/ и отправляй в http://192.168.0.251/wiki/

  

Это понятно. Но бывают сайты, которые не хотят жить в подкаталоге.

Проблема в том, что backend видит в запросе



  

_SERVER[SCRIPT_NAME]/test.php
_SERVER[PHP_SELF]/test.php

куда передали - так и видит. 
Тебе никто не мешает написать так:


# proxy_pass  http://$host$uri$is_args$args;
 proxy_pass  http://192.168.0.251$uri$is_args$args;
 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;


  
Соответственно, если backend формирует какие-то абсолютные ссылки в 
своем ответе (картинки в выводе phpinfo() например имеют вид img 
border=0 src=/test.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42) - 
ссылки получаются неработоспособными.



http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files
если хочется чегото странного.


  

Не надо странного ;)
Проще разбросать сайты по virtualhost'ам.


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4bf62be7.3050...@gmail.com



nginx rewrite

2010-05-20 Пенетрантность Игорь Чумак

Добрый день!

Что-то я туплю :(
[nginx.conf]

   location /wiki {
   proxy_pass  http://192.168.0.251/;
   }

Пытаюсь сделать такое:
Есть сервер (192.168.0.251), в корне которого лежит контент (пусть будет 
test.php).

nginx должен запрос вида http://IP/wiki/test.php передавать на этот сервер.
Запрос обрабатывается, но сервер то уверен, что у него спросили 
/test.php; в ответ формирует страничку, где все ссылки имеют абсолютные 
адреса,  в которых нет подкаталога /wiki.


Нет ли способа на лету (средствами nginx естественно) перекодировать 
ответ сервера?




   location /wiki {
   proxy_pass  http://192.168.0.251/wiki/;
   }
- такой вариант работает, но как быть с сайтом, который не умеет 
работать в поддиректории?



--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4bf50c08.1020...@gmail.com



Re: nginx rewrite

2010-05-20 Пенетрантность Andrey Melnikoff
Игорь Чумак ichumak2...@gmail.com wrote:
 Добрый день!

[...]

 Нет ли способа на лету (средствами nginx естественно) перекодировать 
 ответ сервера?
из чего в что ?


 location /wiki {
 proxy_pass  http://192.168.0.251/wiki/;
 }
 - такой вариант работает, но как быть с сайтом, который не умеет 
 работать в поддиректории?
location / { proxy_pass http://192.168.0.251/; }
добавить ?



-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/9frfc7-fms@kenga.kmv.ru



Re: nginx rewrite

2010-05-20 Пенетрантность Игорь Чумак

Andrey Melnikoff пишет:

Игорь Чумак ichumak2...@gmail.com wrote:
  

Добрый день!



[...]

  
Нет ли способа на лету (средствами nginx естественно) перекодировать 
ответ сервера?


из чего в что ?


  

;)
Сорри, неясно выразился.
Пример:

nginx получил запрос:
http://nginx_ip/wiki//test.php

Передал его на backend http://192.168.0.251/

Проблема в том, что backend видит в запросе

_SERVER[SCRIPT_NAME]/test.php
_SERVER[PHP_SELF]/test.php

Соответственно, если backend формирует какие-то абсолютные ссылки в 
своем ответе (картинки в выводе phpinfo() например имеют вид img 
border=0 src=/test.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42) - 
ссылки получаются неработоспособными.




location /wiki {
proxy_pass  http://192.168.0.251/wiki/;
}
- такой вариант работает, но как быть с сайтом, который не умеет 
работать в поддиректории?


location / { proxy_pass http://192.168.0.251/; }
добавить ?



  

Т.е. не запихивать в поддиректорию ;)
Не катит. А если таких сайтов 2?


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4bf552ab.2090...@gmail.com



Re: nginx rewrite

2010-05-20 Пенетрантность Andrey Melnikoff
Игорь Чумак ichumak2...@gmail.com wrote:
 Andrey Melnikoff пишет:
  Игорь Чумак ichumak2...@gmail.com wrote:

  Добрый день!
  
 
  [...]
 

  Нет ли способа на лету (средствами nginx естественно) перекодировать 
  ответ сервера?
  
  из чего в что ?
 Сорри, неясно выразился.
 Пример:

 nginx получил запрос:
 http://nginx_ip/wiki//test.php

 Передал его на backend http://192.168.0.251/

а зачем он его туда направил ? Есле тебе надо /wiki/ - то и делай location
/wiki/ и отправляй в http://192.168.0.251/wiki/

 Проблема в том, что backend видит в запросе

 _SERVER[SCRIPT_NAME]/test.php
 _SERVER[PHP_SELF]/test.php
куда передали - так и видит. 
Тебе никто не мешает написать так:

# proxy_pass  http://$host$uri$is_args$args;
 proxy_pass  http://192.168.0.251$uri$is_args$args;
 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;


 Соответственно, если backend формирует какие-то абсолютные ссылки в 
 своем ответе (картинки в выводе phpinfo() например имеют вид img 
 border=0 src=/test.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42) - 
 ссылки получаются неработоспособными.

http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files
если хочется чегото странного.


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/nn1gc7-n48@kenga.kmv.ru