Задать вопрос
@djok2142

Nginx как запустить php скрипт от другого сайта на том же сервере?

Добрый день.
Есть VPS на Centos 7 + Nginx + Apache, на котором размещен сайт, назовем его site-a.com, появилась необходимость что бы содержимое папки site-a.com/uploads было зеркально доступно из другого домена site-b.com, но лишь эта папка а не весь сайт целиком. Тогда на этом же сервере припарковал домен site-b.com, и просто в корневом каталоге смонтировал каталог site-a.com/uploads.
mount --bind  /home/admin/web/site-a.com/public_html/public/uploads /home/admin/web/site-b.com/public_html/uploads

И соответственно все содержимое https://site-a.com/uploads стало доступно и по адресу https://site-b.com/uploads. Все работает хорошо, все замечательно.
Однако сейчас, написал скрипт для автоматического создания миниатюр изображений, загруженных в каталог site-a.com/uploads. Для этого в Nginx добавил правило
location ^~ /uploads/thumbs/ {
		try_files $uri /thumbnail?url=$uri;
	}

Соответственно, при запросе файла, Nginx проверяет есть ли файл на диске и если его нет то передает запрос php скрипту https://site-a.com/thumbnail, который создает миниатюру и сохраняет ее в каталог https://site-a.com/uploads/thumbs, и соответственно при следующем запросе Nginx сразу отдаст миниатюру с диска без участия php скрипта. Работает хорошо, все замечательно.
Но вот теперь не могу сообразить как создание миниатюры подружить со вторым доменом, а точнее запуск php скрипта который создает миниатюру в случае ее отсутствия. Так как если миниатюра не создана то он выдает ошибку 404.
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Проще на на втором сайте настроить соответствующие location с проксированием на первый сайт в nginx reverse proxy
Ответ написан
@dodo512
Можно сначала проверить есть ли файл на диске и если нет то проксировать на первый сайт.
location ^~ /uploads/thumbs/ {
    root  /home/admin/web/site-b.com/public_html;

    try_files $uri @proxy;
}

location @proxy {
    proxy_pass http://11.22.33.44:80$uri;
    proxy_set_header Host site-a.com;
}
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Так расположите скрипт thumbnail не в корне сайта, у в /uploads/, или в /uploads/thums/. Тогда и на втором сайте можно будет его вызывать аналогично.

З.Ы. Или скопируйте /thumbnail в корень на втором сайте.

З.З.Ы. Ну или
if (!-e $request_filename) { rewrite ^ https://site-a.com$uri; }
, но это уже как-то через чур...
Ответ написан
Ваш ответ на вопрос

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

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