LINUX.ORG.RU
ФорумAdmin

nginx как прокси, настройка статики

 


0

2

Добрый день Подскажите будет ли при такой схеме работать nginx и раздавать статику. и как это сделать.

Есть несколько виртуальных машин (ВМ) каждая со своей версией php + апач и всякими сайтами Есть одна ВМ на ней установлен nginx и больше ничего. Хочу использовать эту ВМ как реверс прокси. Но как заставить nginx кэшировать и отдавать статику? Если бы он локально стоял я бы прописал что то типа этого

location ~* \.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7$
root /var/www/html/site.ru
expires      max;
access_log     /var/log/nginx/site.ru.access.log combined;
error_log      /var/log/nginx/site.ru.error.log warn;
           }

а в моем случае как быть? в самом деле не копировать же сайты со всех ВМ на сервер с nginx...

location ~* \.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7$
expires      max;
           }
Deleted
()
Ответ на: комментарий от Deleted

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

/etc/nginx/html/upload/iblock/db0/db06974d709a44178620dcd84b000315.jpg" failed (2: No such file or directory)

[error] 19575#19575: *413 open() "/etc/nginx/html/upload/iblock/5f5/5f53e15271222a90553ab5c86be97dc9.jpg" failed (2: No such file or directory)
и сайт полностью не грузится

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

вот весь конфиг

  server {
        listen *:80;
        server_name site.ru www.site.ru;
        location / {
            proxy_pass http://192.168.0.99:8888;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            }

        #location ~* \.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|$
        #root   www.site.ru;
        #expires      3d;
        #access_log     /var/log/nginx/site.ru.access.log combined;
        #error_log      /var/log/nginx/site.ru.error.log warn;
        #    }
   }

fordiego
() автор топика
location ~* \.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7$
proxy_pass http://remote.host/path/to/static


это если один удалённый сервер. если несколько, то вместо ~* надо что-то придумывать с именованными location

SevikL ★★★★★
()

Я в похожей ситуации добавил ещё один nginx. Получилось схема:

nginx -> сеть -> nginx -> php-fpm

У меня php-fpm вместо apache.

Первый nginx терминирует ssl, добавляет заголовок x-forwarded-for и проксирует запрос на второй nginx. Второй nginx работает как обычно, только уже без https и IP клиента берёт из заголовка добавленного первым nginx-ом (модуль ngx_http_realip_module) и инфу о протоколе (http/https) берёт тоже из заголовков

Ещё в nginx добавили протокол proxy, возможно он будет тут полезен https://nginx.org/ru/docs/http/ngx_http_core_module.html#listen

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

:) ура! ошибок нет простите меня за мое невежество просто вообще не разу не вэб программист

fordiego
() автор топика
Ответ на: комментарий от SevikL

Да, вэб серверов у меня 2. на первом 4 сайта, на втором 1 то есть для каждого сайта в ВМ с ngixn в настройках статики надо будет писать не просто proxy_pass http://remote.host/path/to/static а делать именнованный location?

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

вместо ~* надо будет делать другую регулярку. какую - не помогу, не сталкивался.

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

То есть при такой настройке он nginx и статику будет от себя отдавать не дергая апач на виртуалках с сайтами? А как nginx узнает что статика обновилась на сайте?

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

Самый простой вариант - сделать nfs-сервер на vm с фронтэндом и монтировать каталог оттуда на vm с бэкендами с php, чтобы nginx отдавал локальные файлы.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.