Лак по умолчанию порт 6081 - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы попробовать конфигурацию Varnish, где он прослушивает порт по умолчанию 6081, а Apache остается на 80. Идея пришла из этого блога о лаке .

Перенаправление iptables затем отправляет весь трафик 80 на 6081. Таким образом, я могу продолжать использовать мою панель управления через Интернет, не прерывая ее (панель работает на самом 8080, а также прерывается при изменении прослушивания Apache).

Сейчас я нахожусь на чистой установке сервера с установленными только Apache и Varnish, просто чтобы посмотреть, работает ли он как есть.Я могу запустить Varnish с помощью:

curl -I 192.168.0.1:6081

Однако он не работает только на IP, хотя правило iptable запущено и работает.Ниже приведены мои результаты и настройки, очевидно, с использованием фиктивного ip 192.168.0.1

iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source      destination         
REDIRECT   tcp  --  anywhere    anywhere       tcp dpt:http redir ports 6081

IP Table Rule - (ideaс здесь )

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 6081

Результаты curl -I с портом 6081

curl -I http://192.168.0.1:6081
HTTP/1.1 200 OK
Date: Wed, 06 Jun 2018 21:45:20 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Wed, 06 Jun 2018 21:08:27 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
ETag: W/"29cd-56dff9168052e-gzip"
Accept-Ranges: bytes
Connection: keep-alive

Результаты curl-Я без порта

curl -I http://192.168.0.1
HTTP/1.1 200 OK
Date: Wed, 06 Jun 2018 21:36:49 GMT
Server: Apache/2.4.25 (Debian)
Last-Modified: Wed, 06 Jun 2018 21:08:27 GMT
ETag: "29cd-56dff9168052e"
Accept-Ranges: bytes
Content-Length: 10701
Vary: Accept-Encoding
Content-Type: text/html

/ etc / default / varnish

DAEMON_OPTS="-a :6081 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m

/ etc / varnish / default.vcl

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "127.0.0.1";
    .port = "80";

Чего мне не хватает?Apache на 80, Varnish на 6081, трафик 80 перенаправляется на 6081, где Varnish слушает.

Ответы [ 3 ]

0 голосов
/ 21 июня 2018

Я не уверен, что полностью понял проблему здесь.Почему перенаправление с 80 на 6081?

По умолчанию, Varnish будет открыт под 6081, это в основном не должно конфликтовать с другими существующими сервисами, работающими под популярными портами, такими как 80.

Учитывая ваши настройкиЯ бы сделал это наоборот.Я бы запустил Varnish под портом 80 и Apache под 6081 (или любым другим портом в этом отношении - я предполагаю, что 8089 дальше), и, конечно, удостоверился, что Apache установлен как правильный бэкэнд для Varnish.

В конце концов, это прокси, который вы хотели бы иметь перед тем, чтобы принять тепло.

Например:

/ etc / varnish / default.vcl

backend default {
    .host = "127.0.0.1";
    .port = "8089"; # I will assume Apache runs under 8089.
}

Следовательно, что-то вроде этого:

$ curl -is http://127.0.0.1/foo/bar

сначала ударит Varnish, который, в свою очередь, попытается выполнить запрос, задав его бэкэнд (определенный выше Apache).

Сказав это, вы можете отключить перенаправление с 80 на 6081.

0 голосов
/ 16 июля 2018

Дайте мне посмотреть, смогу ли я помочь разобраться с этим.Таким образом, вы хотите попробовать Varnish параллельно только с вашим веб-сервером, чтобы вы могли попробовать его.Если это так, то это не проблема.

Во-первых, порт 6081 предназначен для функций администрирования Varnish.Есть тонны, которые вы можете сделать удаленно через этот порт.

Предполагая, что ваш веб-сервер находится на порту 80, вы можете настроить свой сервер Varnish для: 8080, вы можете настроить свою конфигурацию / etc / varnish по следующей ссылке:

NFILES=131072
MEMLOCK=82000
RELOAD_VCL=1
VARNISH_VCL_CONF=/etc/varnish/mysite.vcl
VARNISH_LISTEN_PORT=8080
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_MIN_THREADS=100
VARNISH_MAX_THREADS=8000
VARNISH_THREAD_TIMEOUT=240
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
VARNISH_STORAGE_SIZE=12G
#VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
VARNISH_TTL=120
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
             -f ${VARNISH_VCL_CONF} \
             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -S ${VARNISH_SECRET_FILE} \
             -s ${VARNISH_STORAGE}"

Затем, в вашей конфигурации "mysite.vcl", вы можете связать лак с вашим веб-сайтом:

backend webserver {         # Define one backend
  .host = "127.0.0.1";    # IP or Hostname of backend
  .port = "80";           # Port for backend listener (Apache, NGINX, etc.)

Затем просто настройте свои таблицы IP для приема трафика для обоих 8080и 80, и вы можете протестировать Varnish на: 8080 и веб-сервер на: 80 независимо.Кстати, вы не должны открывать порты администратора (6081, 6082 и т. Д.) Снаружи.

Если вы решите использовать Varnish, вы поместите его перед вашим веб-сервером.Установите для порта прослушивания лака значение 80, а для веб-сервера - 8080 или любой другой порт, если они находятся на одном сервере.Если это разные серверы, вы можете оставить порт своего веб-сервера на 80, просто вытяните его из брандмауэра, чтобы с ним нельзя было напрямую связаться из внешнего мира.

Удачи!

0 голосов
/ 21 июня 2018

почему так?

По моему мнению, вы должны использовать лак на порту 80 и два сайта на apache, скажем: 8080 и: 8081.

APACHE> настройка 2 vhosts
Site1> Воспроизведение панели на порту 8080
Site2> Воспроизведение вашего сайта на порту 8081

Varnish>
Настройка BackEnd1 для вашей панели
Настройка BackEnd2 для вашего сайта
Один на 8080 для вашей веб-панели и один на ie 8081 для фактического сайта
Скажите лаку для "панели" backend1 для передачи всего на backend1 8080 (так что лак просто передаст вас в apache)
Скажите, что лак для backend2 "site" будет кэшировать все, что вам нравится, для 8081


Итак, в нескольких словах.
панель подается из лака и прохождениявсе к сайту Apache подается с лака, и там вы можете применить свои правила кэширования попадания / пропуска и т. д.
Запомните, чтобы изменить / etc / default / varnish и установить его на порт 80.
PS: Никогда не применял это к комбоVarnish / Apache, но сделал это на Varnish / Nginx.Вы должны проверить, способен ли Apache сделать это.Я сомневаюсь, что он не может .....

...