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

Перенаправить HTTP на HTTPS с помощью ldirectord / LVS

Мы используем LVS для балансировки нагрузки и хотим сделать 301 редирект для http://example.com к https://example.com

LVS без проблем включает https, но реальные серверы http не добавляются в пул (вес равен 0).

LVS не выполняет 301 редирект? Если нет, как мне настроить ldirectord для отправки всего HTTP-трафика на HTTPS?

Вот конфигурация nginx:

server {
    listen      80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

server {
        listen       443;
        ssl on;
        ssl_certificate         server.crt;
        ssl_certificate_key     server.key;
        server_name  example.com;

# more here

}

А ldirectord.cf выглядит так:

virtual=VIP:80
        fallback=127.0.0.1:80
        real=10.0.0.7:80 masq 5
        real=10.0.0.8:80 masq 5
        service=http
        request="lvs.htm"
        receive="lvs"
        virtualhost=example.com
        scheduler=wlc
        protocol=tcp
        checktype=negotiate

virtual=VIP:443
        fallback=127.0.0.1:443
        real=10.0.0.7:443 masq 5
        real=10.0.0.8:443 masq 5
        service=https
        request="lvs.htm"
        receive="lvs"
        virtualhost=example.com
        scheduler=wlc
        protocol=tcp
        checktype=negotiate

Я также попытался настроить свой VIP на порт 80 и мои порты RIP на 443, в результате чего серверы были добавлены в пул, но затем nginx возвращает ошибку 400 «Простой HTTP-запрос был отправлен на порт HTTPS».

Я делал это труднее, чем нужно.

Я изменил свой nginx.conf так:

server {
    listen      80;
    server_name example.com;

    root    /var/www;

    location = /lvs.htm {
        #do nothing
    }

    location / {
        return 301 https://example.com$request_uri;
    }
}

lvs.htm находится в / var / www, поэтому местоположение совпадает, поиск прекращается, и lvs.htm обслуживается с кодом ответа 200. LVS добавляет сервер в пул, и при его попадании nginx правильно перенаправляет на https с 301.