Имеем задачу: Работающий nginx+бекенд qvest.site.com.
Необходимо на другом сайте сделать редиректы с нового адреса www.site2.com/qvest/ на старый qvest.site.com.
Сделал:
[console]
location /qvest {
proxy_pass http://qvest.site.com/;
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;
}
[/console]
Все проксируется, кроме статики, картинок, стилей и т.д.
Пробовал по разному? Но примерно плясал вокруг этого:
[console]location /qvest/media {
proxy_pass http://qvest.site.com;
proxy_set_header Host qvest.site.com;
}[/console]
Сами урлы проксятся, а вот файлы нет. Потом попробовал так:
[console]
location ~* /qvest/\.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
proxy_pass http://qvest.site.com;
}[/console]
Грешу все же на это пока location ~* /qvest/\.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)...
Подскажите как правильно проксить в этой ситуации?
Nginx+ проксирование статики
Путь переписать забыли
rewrite ^/qvest/(.*)$ /$1 break;
aka, как вариант http://wiki.nginx.org/HttpUpstreamRequestHashModule
и вот как-то попробуй:
server {
listen IP:80; # Тут наверное IP того на котором запущен - www.site2.com
location /qvest {
proxy_pass http://IP-SITE:80/; # qvest.site.com
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}aka, статика-то где лежит? :) На новом сервере с нгинксом или на старом, на кого прокси-пасс?
Если на новом сервере, то Вы root прописать забыли.
2newzenon, попробую апстрим модуль еще:)
aka, статика-то где лежит? :) На новом сервере с нгинксом или на старом, на кого прокси-пасс?
Если на новом сервере, то Вы root прописать забыли.
Если бы было все так просто) На старом она лежит и лежать пока там будет.
aka, nginx не умеет удаленно отдавать только статику. Или убирайте все инструкции относительно статики и пускайте все через proxy_pass на бэкенд. Или монтируйте диру со статикой локально, через nfs, например.
Разве нельзя что-то типа:
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|pdf|ppt|txt|tar|wav|bmp|rtf|js|swf|flv)$ {
root /path/to/static/;
}newzenon, это директива для локальной статики, а у ТС статика на удаленном сервере, вместе со скриптами, куда и делается проксипасс.
Denlookh, так я имел ввиду заменить root на proxy_pass . в location статики.
newzenon, так в конфиге ТС так и есть, идет прокси-пасс в локейшене статики, а то, что привели Вы работает локально (root всмысле).
И смысл отдавать статику прокси-пассом с бэкенда по http? Это получается дополнительная нагрузка на хттпед (если он стоит бэкендом). И весь сакральный смысл теряется.
aka, не будет он отдавать статику таки образом. Не будет. А если и будет, то нагрузит бэкенд дополнительными форками хттпеда, переслающими фронтэнду статику по http. Оно Вам надо?
Монтируйте диру со статикой по nfs, если критично отдавать ее отдельно. Либо настройте грамотно кэширование фронтэндом контента.
Просто не озадачивался как-то этим вопросом, надо будет как-нибудь поэкспериментировать.