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

Как использовать Varnish с nginx в качестве терминатора SSL и с пересылкой http на https с помощью nginx

Я установил varnish и nginx и защитил свой сайт с помощью шифрования SSL. Я тестировал varnish против cgi-кеша nginx и обнаружил, что varnish работает немного быстрее в моем случае (wordpress). Поэтому мне нужна помощь в том, как использовать nginx для завершения SSL с помощью varnish и как перенаправить http на https, поскольку мой веб-сайт поддерживает только https. Я использую ubuntu 18.04, пожалуйста, помогите мне кто-нибудь !!

РЕДАКТИРОВАТЬ: я следовал этому руководству: https://www.linode.com/docs/websites/varnish/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-http-on-debian-8/

Это дает мою ошибку в nginx (порт 80 уже используется)

Пожалуйста, помогите мне!

Предположения

  • У Nginx есть vhost, работающий на порт 443 для обработки входящих HTTPS-запросов
  • У Nginx есть виртуальный хост, работающий на порт 80 обрабатывать входящие HTTP-запросы и перенаправлять их в Varnish
  • Лак течет порт 6081 и находится за HTTPS Nginx vhost
  • Nginx, вероятно, также будет иметь vhost, работающий на порт 8080 который не выполняет прокси, но действует как фактический веб-сервер, обслуживая файлы или запросы PHP.

Как видите, моя установка немного отличается от той, что в https://www.linode.com/docs/websites/varnish/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-http-on-debian-8/. Это потому, что я уже занимаюсь перенаправлением HTTP на HTTPS, используя отдельный виртуальный хост Nginx.

В этом случае Varnish прослушивает не порт 80, а порт 6081.

HTTPS vhost

Вот пример Nginx vhost который обрабатывает HTTPS-соединения:

server {
    listen 443 ssl;
    keepalive_timeout   70;
    server_name example.com www.example.com;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_certificate ssl.crt;
    ssl_certificate_key ssl.key;
    ssl_session_cache   shared:SSL:20m;
    ssl_session_timeout 4h;
    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:6081;
        proxy_http_version 1.1;
    }
}

Перенаправление HTTP на HTTPS vhost

Вот фрагмент, который перенаправляет HTTP на HTTPS:

server {
        server_name example.com www.example.com;
        listen  80;
        rewrite "^/$" https://example.com permanent;
        rewrite "^/(.+)$" http://example.com/$1 permanent;
}

Отредактированный контент

Vhosts были отредактированы и содержат примеры значений. Пожалуйста, замените имена хостов в server_name выражения.

Пожалуйста, также убедитесь ssl_certificate и ssl_certificate_key операторы указывают на файлы, которые действительно существуют.