LinuxForum.Fans
Тема

Nginx+ проксирование статики

Автор: aka 11 сообщений 3719 просмотров
#193296

Имеем задачу: Работающий 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)...

Подскажите как правильно проксить в этой ситуации?

#193303

Путь переписать забыли
rewrite ^/qvest/(.*)$ /$1 break;

#193305

aka, как вариант http://wiki.nginx.org/HttpUpstreamRequestHashModule
и вот как-то попробуй:

text
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;
    }
}
}
#193394

aka, статика-то где лежит? :) На новом сервере с нгинксом или на старом, на кого прокси-пасс?
Если на новом сервере, то Вы root прописать забыли.

#193484

2newzenon, попробую апстрим модуль еще:)

Denlookh написал:
aka, статика-то где лежит? :) На новом сервере с нгинксом или на старом, на кого прокси-пасс?
Если на новом сервере, то Вы root прописать забыли.

Если бы было все так просто) На старом она лежит и лежать пока там будет.

#193631

aka, nginx не умеет удаленно отдавать только статику. Или убирайте все инструкции относительно статики и пускайте все через proxy_pass на бэкенд. Или монтируйте диру со статикой локально, через nfs, например.

#193636

Разве нельзя что-то типа:

text
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/;
}
#193747

newzenon, это директива для локальной статики, а у ТС статика на удаленном сервере, вместе со скриптами, куда и делается проксипасс.

#193759

Denlookh, так я имел ввиду заменить root на proxy_pass . в location статики.

#193766

newzenon, так в конфиге ТС так и есть, идет прокси-пасс в локейшене статики, а то, что привели Вы работает локально (root всмысле).
И смысл отдавать статику прокси-пассом с бэкенда по http? Это получается дополнительная нагрузка на хттпед (если он стоит бэкендом). И весь сакральный смысл теряется.

aka, не будет он отдавать статику таки образом. Не будет. А если и будет, то нагрузит бэкенд дополнительными форками хттпеда, переслающими фронтэнду статику по http. Оно Вам надо?
Монтируйте диру со статикой по nfs, если критично отдавать ее отдельно. Либо настройте грамотно кэширование фронтэндом контента.

#193769

Просто не озадачивался как-то этим вопросом, надо будет как-нибудь поэкспериментировать.

Войдите или зарегистрируйтесь, чтобы ответить.