Cвязка nginx+apache и отдача jpg картинки с использованием чпу

Есть простой скрипт который делает из картинки тумбочку если передать ему адрес картинки в get, который дополнительно хранит тумбу, чтобы при повторном обращении ее не переделывать (примеры ниже показывают только проблемную часть), например
/poster.php?src=адрес

Решено прикрутить ЧПУ для красоты
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^posters/(.*)$ poster.php?src=$1 [L]

И тут начинается проблема, если сервер работает только на apache - все хорошо, если на связке nginx+apache, но статикой занимается nginx и видна следующая картина

site.ru/posters/test.jpg
не работает, отдается 404

site.ru/posters/test.jpg2
работает
  • Вопрос задан
  • 6352 просмотра
Пригласить эксперта
Ответы на вопрос 4
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
			root /var/www/inky/data/www/somedocroot;
			error_page 404 = @fallback;
		}
....
		location @fallback {
			proxy_pass http://127.0.0.1:81;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}

Пример из ispmanager взял, лень руками писать.
Логика такая: здесь описаны 2 location (у вас в nginx описан только один из них). Первый - "отдавать статические файлы, подходящие под регулярно выражение напрямую через nginx". Второй - виртуальный location, в который нельзя попасть через какой-либо url, но который можно использовать в реврайтах и внутри конфигурации. Сам локейшн второй - "спроксировать запрос в апач" ( в данном случае, висящий на порту 81).
Ну а дальше всё просто - строчка:
error_page 404 = @fallback;
Означает "если запрошенного статического файла нет в docroot - передай запрос в виртуальный location @fallback" - так запрос попадёт в апач и ваши скрипты-реврайты сработают.
Ответ написан
Комментировать
@Masterme
ну так видимо нжиникс настроен что если не находит файл с расширением jpg - то возвращает 404
а если передать расширение jpg2 - то он его не ищет, а перекидывает запрос на опач
Ответ написан
@Masterme
если в конфиг сервера лезть не вариант - то создавайте все тумбочки не в момент когда они запрашиваются, а в момент, когда генерятся их url
Ответ написан
error_page 404 = @fallback;
#--------------Все 404 отдаем на обработку апача-------------------------------
location @fallback {
proxy_pass http://$host:82;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы