LINUX.ORG.RU
ФорумAdmin

Varnish

 ,


1

1

На сервере стоит nginx. Решил попробовать Varnish.

Настроил nginx на 8080 порт, а Varnish на 80. Всё работает, всё ок. Но, есть одно но!

Сайты на движках работают как надо. А вот со статичными страничками html есть странный нюанс:

Если заходить на сайт как: site.ru/url/index.html - всё норм.

Если открывать site.ru/url/, то открывается так: http://site.ru:8080/url/

Как убрать адрес порта из url?

★★★★★

Добавить proxy_redirect — это один вариант.

proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080 /;

Другой вариант — использовать upstream:

upstream my_cool_app {
   server http://127.0.0.1:8080;
}

server {
   # ... whatever, default stuff
   location / {
       try_files $uri @pass_to_app;
   }
   location @pass_to_app {
       proxy_pass http://my_cool_app;
   }
}
beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от vertexua

try_files можно передать «named location» — те, которые начинаются с @ — «виртуальные» локации.

Т.е. сначала смотрим есть ли такой файл и если нет — передаём upstream'у.

В принципе это более правильный путь и state of art. ;)

beastie ★★★★★
()
Ответ на: комментарий от th3m3

Используй второй вариант.

proxy_redirect — это хак, ловящий Location: в шапке и подменяющий его соответственно.

Я мог там и напутать — использую редко. За правильным использванием сюда: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.