2013-09-10 2 views
4

У меня есть nginx (: 80) и восходящий сервер (: 8080), запущенный на моей машине.Nginx proxy перенаправление без изменения url

  • Я хочу проксировать все запросы в/активы/(*.?) До местоположения вверх/вверх по течению/$ 1.
  • Восходящие переадресовывает сервер (302)/вверх/file_id к /real/file/location.ext

Вот мой код:

location /assets/ { 
    rewrite ^/assets/(.*) /upstream/$1 break; 
    proxy_pass http://127.0.0.1:8000; 
} 

Это похоже на работу, но на на стороне клиента я получаю перенаправлены местоположение:

http://myserver.com/real/file/location.ext 

Я вроде хочу, чтобы скрыть его, так что он остается:

http://myserver.com/assets/file_id 

Идея заключается в том, чтобы восходящий сервер находил местоположение реального файла, но пусть nginx обслуживает файл, не отдавая его реальное местоположение. Возможно ли это?

ответ

0

первого вы используете 8000 в proxy_pass, но вы упоминая свой порт 8080.

Во-вторых, не удалить переписывание линии следует сделать трюк, потому что вы на самом деле с помощью правила перезаписи здесь и не добраться до строка proxy_pass. Нечто подобное должно работать:

location /assets/ { 
    include proxy_params; 
    proxy_pass http://127.0.0.1:8080; 
} 

Есть также proxy_rewrite и proxy_redirect команды, которые могут помочь вам в получении этого вверх по течению переадресовывать обрабатывается внутри Nginx.

Надеюсь, что это поможет!

Смежные вопросы