LINUX.ORG.RU

Статика nginx

 , ,


0

1

доброго времени суток , есть вот такой конфиг

server {
    listen *:80 ;
    server_name имя;
        location / { 
             proxy_pass адрес;
        }
        location ~ images\.(gif|jpg|png)$ {
            root рут каталог;
        }
      
 }

в рут каталоге второго локейшина есть 3 разных изображения разных форматов с именем 1,2,3 нужно при отсутствии какого то из изображений в указанном рут каталоге , начать искать его в другом , например где то в /opt ну или даже в /home/user , кто подскажет , есть такая фича в Nginx ? ато чет не нашел норм инфы...


Ответ на: комментарий от drsm

тут уже был)

server {
    listen *:80 ;
    server_name нейм;
        location / { 
             proxy_pass адрес; 
        }
        location ~ images\.(gif|jpg|png)$ {
            root рут
            try_files $uri /var/www/html/images/1.jpg;
        }
        location = /var/www/html/images/1.jpg {
             expires 30s;
        }

 }




Пробовал так, не работает...

echo_ ()
Ответ на: комментарий от Slack

тут такой момент...

у меня картинка вызывется из каталога images приложения glassfish , и 404 вылетает glassfish-овская , кто подскажет , как быть, и чисто теоретически , этот конфиг (что выше) как я поняимаю должен работать?

echo_ ()
Ответ на: комментарий от Slack

хотя....

вот лог доступа


10.1.1.166 - - [12/Dec/2017:09:03:43 +0200] "GET /images/5.jpg HTTP/1.1" 200 922170 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
10.1.1.166 - - [12/Dec/2017:09:03:57 +0200] "GET /images/1.jpg HTTP/1.1" 404 500 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
10.1.1.166 - - [12/Dec/2017:09:11:17 +0200] "GET /images/1.jpg HTTP/1.1" 404 500 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
[/bash]

картинку с именем 1 спецом удалил...он ищет ее всеравно там же...скажем так не переключается на другой...

echo_ ()
Ответ на: тут уже был) от echo_

во втором локейшене нет рута.

пути задаются везде относительно рута.

трайфайлз не может работать с несколькими рутами.

попробуй так:

        location /images {
            root /storage/first;
            try_files $uri @second;
             expires 30s;
        }

        location @second {
            root /storage/second;
            try_files $uri @third;
        }

        location @third {
            root /storage/third;
            #try_files $uri =404;
        }


drsm ()
Ответ на: комментарий от drsm

Я правильно понял ?

в папке /storage/first/images лежит картинка 1.jpg , в папке /storage/second/images лежит такая же картинка с таким же именем если мы из одного из каталогов удалим картинку , то она подхватится с другого , так ?

echo_ ()
Ответ на: комментарий от anonymous

Трабл...

крч , , сделал вот так :

server {
    listen *:80 ;
    server_name hello.com;
        location ~ ^/images/.*\.(gif|jpg|png)$ {
            root /var/www/html/;
            error_page 404 = @back;
        }
        location @back {
             proxy_pass http://localhost:8080;
        }
}
если я перехожу по адресу hello.com/images/1.jpg вижу свою картинку которая обрабатывается благодаря первому локейшену,по логике если ее не будет обнаружено то сервер должен поискать ее в каталоге приложения hello , но всеравно , максимум что я получаю 404 , и судя по логам в локейшин @back даже обращения нету,он всеравно ищет ее в каталоге /var/www/html....что я делаю не так ?

echo_ ()
Ответ на: комментарий от bdfy

ubuntu 16.04

dpkg -l | grep nginx
ii  nginx                                         1.10.3-0ubuntu0.16.04.2                      all          small, powerful, scalable web/proxy server
ii  nginx-common                                  1.10.3-0ubuntu0.16.04.2                      all          small, powerful, scalable web/proxy server - common files
ii  nginx-extras                                  1.10.3-0ubuntu0.16.04.2                      amd64        nginx web/proxy server (extended version)

echo_ ()
Ответ на: комментарий от bdfy

даже так не работает

location ~ ^/images/.*\.(gif|jpg|png)$ {
            root /var/www/html/;
            error_page 404 = @google;
        }
        location @google {
             proxy_pass https://google.com; 
        }

как я понял меня должно было вместо 404 кинуть на гугл? если да то нифига....

echo_ ()