HTTPS Everywhere С Nginx, лаков и Apache

Веб движется в сторону шифрование HTTPS с использованием по default.Этот шаг был воодушевлен Google, который объявил, что HTTPS будет рейтинг signal 1 .Однако, перемещение ваш сайт HTTPS хорош для другой | reasons__4 __11 | 2 | __8 тоже .

Вместо обсуждения этих причин, эта статья предполагает, что вы уже решили переехать в HTTPS.Мы будем идти через, как двигаться ваш сайт, чтобы HTTPS, воспользовавшись Лак кэш .

Что Проблема с лака и HTTPS? Link

В предыдущих статьях на Smashing Magazine, я объяснил, как использовать Лак для ускорения website __27 | 3 .Для тех из нас, кто использует лак, а также хотят, чтобы перейти к протоколу HTTPS, есть проблема: Лак не поддерживает HTTPS 4 .Если вы делаете шаг к SSL, настройке Apache, чтобы служить ваш сайт надежно, то вы потеряете скорость преимущество Лак .

Существует относительно простой способ иметь дело с этим вопросом, и это что-то, чтобы придерживаться между входящих запросов SSL и лак, слой, который обрабатывает безопасные сертификаты SSL соединения и затем передает запрос обратно лаком.Для решения этой задачи мы будем использовать Nginx.Вы, возможно, знаете Nginx в качестве веб-сервера Apache альтернативы, и это.Тем не менее, он также может быть использован в качестве прокси-сервера для обработки и передачи запросов на другие услуги, которые это то, что мы собираемся сделать здесь.Другими словами, мы собираемся создать бутерброд веб-сервера, с лаком, как вкусный кэш-мяса в среднем .

Где мы находимся и куда мы хотим, чтобы Link

Я предполагаю, что вы находитесь в подобной ситуации, как мне и есть сервер — ли виртуальная или специализированные аппаратные средства — с рядом сайтов, работающих на нем.Некоторые из этих сайтов, которые вы хотите, чтобы в полной мере HTTPS сделать, и, возможно, некоторые останутся HTTP в настоящее время .

Текущая конфигурация будет иметь каждый запрос на порт 80 обрабатывается лаком.Лак затем решает, на основе правилдобавил в свой лаком Configuration Language (VCL), то ли поставить сохраненную копию страницы, или передать запрос обратно в Apache для новой страницы должен быть создан.После того, как страница парад Apache, веб-сервер, возможно, потребуется, чтобы вытащить информацию из базы данных или выполнять другую обработку, прежде чем доставить его .

К концу этого урока, мы хотим быть в следующем положении:

  • Nginx будет работать на порту 443 и обрабатывать входящие запросы HTTPS, вручая их, чтобы лак .
  • Лак будет работать на порту 80 и обрабатывать входящие запросы HTTP, в том числе из Nginx, обеспечивая непосредственно из кэша или вручения Apache
  • Apache будет работать на порту 8080 и делать то, что делает Apache: доставить ваш сайт или приложение .

В этой ситуации, Nginx становится прокси.Это не делает обработку вашего сайта, и он не работает PHP или подключения к вашей базе данных.Все это делает принять запросы HTTPS и передать их обратно в лак.Лак затем решает, следует ли передать обратно сохраненную копию или передать его обратно в Apache, чтобы получить свежий один, используя правила лака у вас уже есть .

Мой Пример окружающей среды Link

Я собираюсь работать в Vagrant, используя Ubuntu Trusty.Мой отправной точкой является, как описано выше, с Apache установлен на порт 8080, и лак 4 установлен на порт 80 .

Если вы хотели бы следовать, вы можете скачать мои среды от GitHub __24 | | 5__17 .Инструкции по настройке находятся в файле ридми .

У меня есть два веб-сайтов, настроенные.Если я посещаю эти сайты в браузере, лаки будет обрабатывать запрос на порт 80, либо предоставления файл из кэша или передать его обратно в Apache .

На данный момент, это полезно, чтобы проверить, какие порты все работает дальше.SSH в Vagrant в командной строке:

> vagrant ssh

Затем запустите NetStat:

> sudo netstat -taupen

Это даст вам выход портов, а также информацию, на которой процесс их использования.Вы должны найти, что лак работает на порту 80 и Apache на 8080 .

Netstat 6
( Просмотр большой version __48 | | 7__17 )

Вы также можете проверить, что лак работает нормально и служить страниц из кэша с помощью следующей команды:

> varnishstat
varnishstat 8
( Просмотр большой version 9 )

Если вы перезагрузите страницу в браузере, вы должны увидеть кэша попаданий и промахов .

Если вы используете свой VCL из GitHub, я добавил к конфигурации лаком код, который будет отправлять HIT или MISS заголовок в браузере.Это означает, что вы можете посмотреть на заголовки отправляются.Вы должны увидеть X-Cache: HIT если страница пришла из лака и X-Cache: MISS, если он был подан Apache .

Viewing a HIT from Varnish in the headers

Установка Nginx Link

Теперь мы можем установить Nginx.О системе Ubuntu, это так просто, как, выполнив следующую команду:

> sudo apt-get install nginx

Nginx в documentation 10 имеет информацию по установке Nginx на различных системах, а также пакеты для систем, которые не включают его в свой управления пакетами.Помните, что мы только с помощью Nginx в качестве прокси, так что вам не нужно беспокоиться о настройке PHP или MySQL поддержку.Nginx won’ т запускается по умолчанию, и в настоящее время она не в состоянии начать, потому что лак уже использует порт 80. Если вы делаете этот процесс на реальном сервере, вы бы безопасно запускать этот шаг без каких-либо влияния на ваших запущенных веб-сайтов.

Создать или установить __40 сертификата SSL | Link

Следующим шагом является создание наш сертификат SSL.Потому что мы работаем на местном уровне, мы можем создать “самоподписанный” сертификат для того, чтобы проверить соединения SSL .

Для создания собственного сертификата для тестирования, сначала выберите или создайте каталог для его I’. Ве создали nginx каталог в /etc/ssl.Затем запустите команду ниже, чтобы генерировать ключ и сертификат пару .

> sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/nginx/smashing_ssl_one.tutorials.eoms.key -out /etc/ssl/nginx/smashing_ssl_one.tutorials.eoms.crt

Когда вы запустите эту команду, будет предложено ряд вопросов.Вы можете в основном поместить мусор в них;Однако, при запросе “Common Name”, использовать домен, который вы вводите в адресной строке для доступа ваш сайт на Vagrant.Для меня, это smashing_ssl_one.tutorials.eoms.

Creating a self-signed certificate 11
( Просмотр большой version 12 )

Если вы теперь посмотрите в созданную папку, вы должны увидеть два файла, один с .key расширение и один с .crt расширение .

На вашем рабочем сервере, вы бы купить сертификат от органа, выдавшего.Вы бы тогда быть предоставлены файлов ключа и сертификата, а вместо создания их, вы бы разместить их на сервере, прежде чем следовать следующий шаг .

Настройка SSL веб-сайтов в Nginx Link

С вашим самозаверяющих или приобретенных SSL сертификатов на месте, вы можете настроить веб-сайты в Nginx .

Во-первых, удалить файл конфигурации по умолчанию от /etc/nginx/sites-enabled.Вы можете удалить default файл или переместить его в другое место .

Нам нужно только настроить веб-сайты, будут обслуживаться по протоколу SSL;любые другие веб-сайты по-прежнему будет подан прямо из лака на порту 80. В моем случае, я собираюсь настроить smashing_ssl_one.tutorials.eoms.Если вы видите, что домен в ниже шагов, вы можете заменить его с вашей собственной живой или локального домена, если вы не используете свой пример .

В /etc/nginx/sites-available/, создать файл конфигурации your_domain.com.conf .

В этом файле, добавьте следующее:

server {
  listen *:443 ssl;
  server_name smashing_ssl_one.tutorials.eoms;

  ssl on;
  ssl_certificate /etc/ssl/nginx/smashing_ssl_one.tutorials.eoms.crt;
  ssl_certificate_key /etc/ssl/nginx/smashing_ssl_one.tutorials.eoms.key;

  location / {

    proxy_pass            http://127.0.0.1:80;
    proxy_read_timeout    90;
    proxy_connect_timeout 90;
    proxy_redirect        off;

    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 https;
    proxy_set_header      X-Forwarded-Port 443;
    proxy_set_header      Host $host;
  }
}


Первая строка сообщает серверу мы на порту 443. Это порт по умолчанию для HTTPS соединений, как порт 80 для HTTP.Мы затем дать имя сервера .

Мы устанавливаем SSL, чтобы быть на, а затем добавить сертификат и ключ, который мы создали, или установлена, используя полный путь файловой системы .

Под месте, мы используем proxy_pass пройти запрос обратно в порт, где 80 Лак ждет его.Мы тогда установить некоторые заголовки, которые будут переданы через .

После добавления этот файл, символическими ссылками файл в sites-available к sites-enabled.Если вы когда-нибудь хотели, чтобы выключить веб-сайт, вы можете просто удалить символическую ссылку.Следующая команда создаст символическую ссылку в командной строке:

> ln -s /etc/nginx/sites-available/smashing_ssl_one.tutorials.eoms.conf /etc/nginx/sites-enabled/smashing_ssl_one.tutorials.eoms.conf

Затем перезагрузите Nginx:

> sudo service nginx restart

Если вы видите выход restarting nginx nginx, а затем [fail], вероятно, проблема некоторые опечатка в вашей конфигурации.Мой обычный проблема либо разделения ключей и значений с двоеточия или забывая точку с запятой в конце строки .

Если Nginx не запускается, посмотрите на журнал в /var/log/nginx/error.log, потому что большинство проблем пояснений .

Вы увидите [OK], если Nginx начинает успешно.Теперь, еслиВы проверьте, чтобы увидеть, что работает, на каком порту, вы увидите, что Nginx теперь на порту 443, лак все еще имеет порт 80 и Apache 8080 .

> sudo netstat -taupen

Большой тест по настоящее время, посетите сайт, используя https://.Если вы используете самоподписанный сертификат, то вам придется пройти по __60 предупреждающие сообщения | ваш браузер предупреждает вас, что сертификат выдается неизвестной власти .

Firefox warns me the connection is untrusted 13
( Просмотр большой version 14 )

Если вы видите вашу страницу служил надежно с замком в адресной строке, то вы в настоящее время отбывает HTTPS с по …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.