Haproxy перенаправляет www на не-www

В настоящее время я использую Haproxy для балансировки нескольких узлов express.js. Я знаю, что можно перенаправить с помощью express.js, но я надеялся сделать это с помощью Haproxy.

Мне было интересно, как я могу сделать постоянную переадресацию с сайта www.mysite.com на mysite.com?

Ответы

Ответ 1

redirect prefix http://example.com code 301 if { hdr(host) -i www.example.com }

Дополнительную информацию см. в документации по правилу префикс перенаправления.

Если вы используете более новую версию HAProxy, то есть не менее 1.6, вы можете использовать более общий синтаксис, который позволяет перенаправить любой хост, а не просто явно названный

http-request redirect prefix http://%[hdr(host),regsub(^www\.,,i)] code 301 if { hdr_beg(host) -i www. }

Здесь мы используем фильтр regsub для динамического генерации правильного имени хоста без префикса www..

Если вы хотите выполнить перенаправление другим способом, то есть добавить www, если его уже нет, правило упрощается:

http-request redirect prefix http://www.%[hdr(host)] code 301 unless { hdr_beg(host) -i www. }