@werdender

Как реализовать динамическое управление редиректом?

Есть два сервера для отдачи дистрибутивов:

download.example.com (nginx->apache)
static.example.com (CDN)

Необходимо сделать механизм "переключения", который будет управлять - с какого из этих серверов будет отдан дистрибутив для скачивания. Буквально на уровне какого-нибудь php-скрипта - список дистрибутивов и переключатель download.example.com/CDN.

Решение в лоб - генерить .htaccess файл. Но apache хотелось бы из этого процесса исключить.

В какую сторону смотреть?
  • Вопрос задан
  • 2644 просмотра
Решения вопроса 1
@werdender Автор вопроса
В итоге поступил следующим образом - когда менеджер заходит в веб-интерфейс и включает CDN для какого-то из дистрибутивов, в некоторый каталог (например, /cdnenabled) записывается пустой файл по маске product-name.trig. Нгинкс проверяет существование этого файла, и если он существует, то при запросе дистрибутива пользователь перенаправляется на CDN. Иначе - нгинкс отдает его сам.

Пример конфига нгинкс-а:

...

server {
	listen 80;

	location ~^/en/(.*)/(.*)-setup.exe$ {
		set $product $1;
		set $setup_part $2;

		if (-f /home/www/example.com/public_html/cdnenabled/$product.trig) {
			rewrite ^ http://cdnserver.com/en/$product/$product-setup.exe; #редирект на CDN в случае существования файла
		}

		#Отдать дистрибутив или показать 404.
		try_files /home/www/example.com/public_html/en/$product/$product-setup.exe /home/www/example.com/public_html/404.html;
	}
}

...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
icelaba
@icelaba
Знаю и умею всё
Что мешает пойти по совсем тупому пути, и когда вы генерите страничку со ссылкой сразу подставлять нужную.
Или на сервере на страничке генерить редирект,
тут перечислены еще варианты
en.wikipedia.org/wiki/URL_redirection
Ответ написан
Ваш ответ на вопрос

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

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