HTTP-прокси в OpenBSD 5.8 (замена Apache ProxyPass)

Вопрос или проблема

Я пытаюсь заменить Apache на httpd от OpenBSD, но не могу разобраться, что делать с моими директивами ProxyPass.

В конфигурации Apache это выглядит так:

 ProxyPass /someurl http://192.168.123.123/someotherurl
 ProxyPassReverse /someurl http://192.168.123.123/someotherurl
  • Я думал, что для этого мне следует использовать relayd, но как мне сделать перенаправление URL?
  • Мне нужно настроить relayd, чтобы он слушал на порту 80 и перенаправлял некоторые запросы на разные внутренние машины, а остальные на httpd на localhost?

Отличный вопрос! Новый httpd от OpenBSD не является веб-сервером с полным набором функций, и он не предназначен для этого. Что касается relayd, который был предшественником httpd, я не думаю, что он также имеет возможность выполнять то, что вам нужно.

Лучшей заменой Apache без исключений все еще является nginx.

Он легко доступен в дереве портов OpenBSD как www/nginx и может быть легко установлен как предварительно скомпилированный пакет с помощью pkg_add(1)doas pkg_add nginx.

После установки nginx, вы бы использовали директиву proxy_pass, и она, вероятно, будет выглядеть так:

location /someurl {
    proxy_pass http://192.168.123.123/someotherurl; 
}

Что касается ProxyPassReverse, у nginx есть более подходящее название для этого — proxy_redirect, и значение по умолчанию default должно уже быть достаточно для ваших нужд (если ваши директивы ProxyPassReverse и ProxyPass имели одно и то же значение). Удачи!

Ответ или решение

Для замены функциональности ProxyPass из Apache на OpenBSD 5.8, вы можете использовать веб-сервер Nginx, который предлагает гораздо более широкий функционал по сравнению с httpd в OpenBSD.

Установка Nginx на OpenBSD

  1. Установите Nginx:
    Выполните команду:
    doas pkg_add nginx

Конфигурация проксирования

  1. Настройте конфигурацию Nginx:
    Отредактируйте файл конфигурации Nginx, который обычно находится по пути /etc/nginx/nginx.conf или в отдельной директории, например, /etc/nginx/conf.d/.

    Пример конфигурации, аналогичной ProxyPass из Apache:

    server {
       listen 80;
       server_name ваш_домен.com;
    
       location /someurl {
           proxy_pass http://192.168.123.123/someotherurl;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
    }

    Здесь location /someurl определяет путь, который будет проксироваться. Директива proxy_pass указывает целевой URL. Дополнительные заголовки помогают обеспечить передачу информации о клиенте и необходимости протокола.

Обработка обратного проксирования

  1. Управление редиректами:
    Для аналогии с ProxyPassReverse в Nginx используется директива proxy_redirect. Если исходный и целевой адреса совпадают, то можно просто установить значение по умолчанию:

    location /someurl {
       proxy_pass http://192.168.123.123/someotherurl;
       proxy_redirect http://192.168.123.123/someotherurl /someurl;
    }

    Этот фрагмент говорит Nginx автоматически изменять заголовки Location и Refresh, чтобы они указывали на ваш проксированный путь.

Запуск и тестирование

  1. Запустите Nginx:
    После того как конфигурация внесена, запустите службу Nginx:

    doas rcctl start nginx
  2. Проверьте конфигурацию:
    Убедитесь, что конфигурация Nginx корректна:

    doas nginx -t

    Если проверка прошла успешно, откройте в веб-браузере http://ваш_домен.com/someurl для тестирования работы прокси.

Заключение

Используя Nginx в качестве обратного прокси на OpenBSD 5.8, вы получите функциональность, сопоставимую с Apache ProxyPass. В дополнение к этому, Nginx предлагает высокую производительность и масштабируемость, что делает его предпочтительным выбором для многих сценариев.

Оцените материал
Добавить комментарий

Капча загружается...