Назад | Перейти на главную страницу

Сервис перенаправления на nginx

У меня есть динамический список перенаправлений с относительного 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-адрес.