У меня есть динамический список перенаправлений с относительного URL-адреса на моем сайте на другой абсолютный URL-адрес:
my_website_url_1 --> other_website_url_1
...
my_website_url_N --> other_website_url_N
Этот список состоит из нескольких сотен записей и меняется несколько раз в день.
(Фактический список находится в БД, но он может быть в текстовом файле или в любой удобной форме.)
«Мой сайт» - это сервер nginx.
Я ищу надежное решение для развертывания изменений списка переадресации на сервере nginx без прерывания обслуживания.
Любой совет?
Возможна замена nginx на что-то другое.
Я давно написал небольшое стоечное приложение именно для этой цели. Вы можете проверить это на http://github.com/minhajuddin/redirector
Из ридми:
Простое стоечное приложение, которое упрощает перенаправление нескольких доменов.
Чтобы настроить приложение, все, что вам нужно сделать, это отредактировать файл config.yaml, ниже представлен образец файла конфигурации:
cosmicvent.net: # <== This is the host name of the domain which you want to redirect
status: 302 # <== status code with which it is redirected, 302 for temporary redirects, 301 for permanent redirects
location: 'http://cosmicvent.com' # <== the domain which it is redirected *to*
'localhost:3030':
status: 301
location: 'http://cosmicvent.com:3030'
Одна из идей состоит в том, чтобы иметь таблицу базы данных (MySQL или что-то еще), которую вы можете заполнить своими перенаправлениями. Примерно каждый час cron может запускать скрипт, который проверяет эту таблицу, проверяет, есть ли новые записи с момента последнего запуска, а затем генерирует новую конфигурацию nginx на основе того, что он находит в этой таблице.
Я бы предложил использовать что-то вроде Ruby + ERB, чтобы сделать это.
После этого он может выполнить перезагрузку nginx, чтобы избежать перебоев в обслуживании.
Я не уверен, какой вариант лучше в вашем случае. Я предполагаю, что вы могли бы создать задание cron, которое генерирует часть вашей конфигурации nginx, а затем перезагружается, но мне это кажется опасным взломом.
В зависимости от того, какую нагрузку вы получаете на относительные URL-адреса, вы можете просто заставить код вашего приложения запускать перенаправления. Например, если вы используете PHP, проверьте входящий URL-адрес, чтобы увидеть, является ли это вашей таблицей перенаправления, если это так, отправьте обратно HTTP-перенаправление на канонический URL-адрес.