One place for hosting & domains

      использованием

      Хостинг сайта с использованием Cloudflare и Nginx в Ubuntu 18.04


      Автор выбрал фонд Electronic Frontier Foundation для получения пожертвований в рамках программы Write for DOnations.

      Введение

      Cloudflare — это служба, располагающаяся между посетителем и сервером владельца сайта, выступающая как обратный прокси-сервер для сайтов. Cloudflare предоставляет сеть доставки контента (CDN), а также защиту от DDoS и распределенные службы сервера доменных имен.

      Nginx — это популярный веб-сервер, на котором размещены многие крупнейшие сайты с самым большим трафиком в Интернете. Организации часто обслуживают сайты с помощью Nginx и используют Cloudflare как поставщика CDN и DNS.

      В этом обучающем модуле вы научитесь защищать свой сайт, обслуживаемый Nginx, сертификатом ЦС Origin от Cloudflare и настраивать Nginx для использования запросов pull с аутентификацией. Преимущества такой системы заключаются в том, что вы используете CDN и быстрое разрешение DNS от Cloudflare и гарантируете проведение всех соединений через Cloudflare. Это не даст вредоносным запросам достичь вашего сервера.

      Предварительные требования

      Для прохождения данного обучающего руководства вам потребуется следующее:

      Шаг 1 — Генерирование сертификата TLS от ЦС Origin

      Центр сертификации Cloudflare Origin позволяет сгенерировать бесплатный сертификат TLS, подписанный Cloudflare, для установки на ваш сервер Nginx. Используя сгенерированный сертификат TLS Cloudflare, вы можете защитить соединение между серверами Cloudflare и вашим сервером Nginx.

      Для генерирования сертификата с использованием ЦС Origin выполните вход в свою учетную запись Clouflare через браузер. Выберите домен, который хотите защитить, и перейдите в раздел SSL/TLS панели управления Cloudflare. Откройте вкладку Origin Server (Сервер Origin) и нажмите кнопку Create Certificate (Создать сертификат):

      Опция создания сертификата в панели управления Cloudflare

      Оставьте выбранной опцию по умолчанию Let Cloudflare generate a private key and a CSR (Позволить Cloudflare сгенерировать закрытый ключ и CSR).

      Опции графического интерфейса ЦС Origin

      Нажмите Next (Далее), и вы увидите диалоговое окно с сертификатом Origin и закрытым ключом. Вам потребуется переместить сертификат Origin и закрытый ключ с сервера Cloudflare на ваш сервер. Для дополнительной безопасности информация закрытого ключа больше не будет отображаться, поэтому вам следует скопировать ключ на свой сервер, прежде чем нажать OK.

      Диалоговое окно с сертификатом Origin и закрытым ключом

      Мы будем использовать каталог /etc/ssl на сервере для хранения сертификата Origin и файлов закрытого ключа. Эта папка уже существует на сервере.

      Вначале скопируйте содержимое сертификата Origin, отображаемое в диалоговом окне вашего браузера.

      Затем откройте на сервере файл /etc/ssl/cert.pem в предпочитаемом текстовом редакторе:

      • sudo nano /etc/ssl/cert.pem

      Добавьте в файл содержимое сертификата. Сохраните файл и закройте редактор.

      Затем вернитесь в браузер и скопируйте содержимое закрытого ключа. Откройте файл /etc/ssl/key.pem для редактирования:

      • sudo nano /etc/ssl/key.pem

      Вставьте в файл закрытый ключ, закройте файл и выйдите из редактора.

      Примечание. Иногда при копировании сертификата и ключа из панели управления Cloudflare и их вставке в соответствующие файлы на сервере в файлы могут быть добавлены пустые строки. Nginx рассматривает такие сертификаты и ключи как некорректные, поэтому следует убедиться, что в файлах нет пустых строк.

      Предупреждение. Сертификату ЦС Cloudflare Origin CA доверяет только Cloudflare, и поэтому его следует использовать только на серверах Origin, имеющих активное подключение к Cloudflare. Если вы приостановите или отключите Cloudflare в любой момент, при обработке сертификата ЦС Origin CA будет выведена ошибка отсутствия доверия к сертификату.

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

      Шаг 2 — Установка сертификата ЦС Origin в Nginx

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

      Для начала убедитесь, что брандмауэр UFW разрешает трафик HTTPS. Включите опцию Nginx Full, которая открывает порт 80 (HTTP) и порт 443 (HTTPS):

      • sudo ufw allow 'Nginx Full'

      Перезагрузите UFW:

      Убедитесь, что новые правила разрешены и брандмауэр UFW активен:

      Результат должен будет выглядеть следующим образом:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

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

      • sudo rm /etc/nginx/sites-enabled/default

      Затем откройте файл конфигурации Nginx для вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Файл должен выглядеть следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/your_domain/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name your_domain www.your_domain;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      
      

      Мы изменим конфигурацию Nginx, чтобы она выполняла следующее:

      • Прослушивание порта 80 и перенаправление всех запросов с использованием https.
      • Прослушивание порта 443 и использование сертификата Origin и закрытого ключа, добавленных на предыдущем шаге.

      Измените файл, чтобы он выглядел следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          listen [::]:80;
          server_name your_domain www.your_domain;
          return 302 https://$server_name$request_uri;
      }
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
      
          server_name your_domain www.your_domain;
      
          root /var/www/your_domain/html;
          index index.html index.htm index.nginx-debian.html;
      
      
          location / {
                  try_files $uri $uri/ =404;
          }
      }
      

      Сохраните файл и выйдите из редактора.

      Протестируйте файлы конфигурации Nginx на отсутствие ошибок синтаксиса:

      Если проблем обнаружено не будет, перезапустите Nginx для активации изменений:

      • sudo systemctl restart nginx

      Откройте раздел SSL/TLS панели управления Cloudflare, перейдите на вкладку Overview (Обзор) и измените режим шифрования SSL/TLS на Full (strict) (Полный (строгий)). Это предпишет Cloudflare всегда шифровать соединение между Cloudflare и вашим сервером Nginx.

      Активируйте полный (строгий) режим SSL на панели управления Cloudflare

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

      В следующем разделе мы настроим аутентификацию запросов pull ЦС Origin для подтверждения того, что ваш сервер взаимодействует именно с Cloudflare, а не с каким-то другим сервером. Так мы настроим Nginx принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare, а все запросы, не проходящие через Cloudflare, будут отбрасываться.

      Шаг 3 — Настройка запросов pull ЦС Origin с аутентификацией

      Сертификат ЦС Origin помогает Cloudflare подтверждать взаимодействие с правильным сервером Origin. На этом шаге мы используем аутентификацию клиента TLS, чтобы подтвердить взаимодействие вашего сервера Nginx с Cloudflare.

      При установлении связи TLS с аутентификацией клиента обе стороны предоставляют сертификат для проверки. Сервер Origin настроен так, чтобы принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare. Запросы, не проходящие через Cloudflare, будут отклоняться, поскольку у них не будет сертификата Cloudflare. Это означает, что злоумышленники не смогут обходить меры безопасности Cloudflare и подключаться к вашему серверу Nginx напрямую.

      Cloudflare предоставляет сертификаты, подписанные ЦС со следующим сертификатом:

      -----BEGIN CERTIFICATE-----
      MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
      BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
      aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
      cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
      MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
      BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
      VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
      ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
      ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
      42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
      ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
      hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
      QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
      Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
      aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
      lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
      PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
      CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
      +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
      AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
      DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
      alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
      QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
      zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
      VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
      6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
      0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
      5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
      fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
      bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
      iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
      AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
      fVQ6VpyjEXdiIXWUq/o=
      -----END CERTIFICATE-----
      

      Также вы можете загрузить сертификат напрямую из Cloudflare здесь.

      Скопируйте этот сертификат.

      Затем создайте файл /etc/ssl/cloudflare.crt для хранения сертификата Cloudflare:

      • sudo nano /etc/ssl/cloudflare.crt

      Добавьте сертификат в файл. Сохраните файл и выйдите из редактора.

      Обновите конфигурацию Nginx для использования запросов pull ЦС Origin с аутентификацией TLS. Откройте файл конфигурации вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Добавьте директивы ssl_client_certificate и ssl_verify_client, как показано в следующем примере:

      /etc/nginx/sites-available/your_domain

      . . .
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl        on;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
          ssl_client_certificate /etc/ssl/cloudflare.crt;
          ssl_verify_client on;
      
          . . .
      

      Сохраните файл и выйдите из редактора.

      Проведите тестирование и убедитесь, что в вашей конфигурации Nginx нет ошибок синтаксиса:

      Если проблем обнаружено не будет, перезапустите Nginx для активации изменений:

      • sudo systemctl restart nginx

      Для аутентификации запросов pull откройте раздел SSL/TLS в панели управления Cloudflare, перейдите на вкладку Origin Server (Сервер Origin) и включите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией).

      Включить запросы pull сервера Origin с аутентификацией

      Откройте сайт по адресу https://your_domain для проверки правильности настройки. Как и в предыдущем случае, вы увидите свою домашнюю страницу.

      Чтобы ваш сервер принимал только запросы, подписанные ЦС Cloudflare, отключите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией) и перезагрузите свой сайт. Вы должны получить следующее сообщение об ошибке:

      Сообщение об ошибке

      Ваш сервер Origin выдаст сообщение об ошибке, если запрос не подписан ЦС Cloudflare.

      Примечание. Большинство браузеров кэшируют запросы, и, чтобы увидеть вышеуказанное изменение, вы можете использовать режим инкогнито/ конфиденциального просмотра в своем браузере. Чтобы не дать Cloudflare кэшировать запросы во время настройки сайта, перейдите на вкладку Overview (Обзор) в панели управления Cloudflare и включите опцию Development Mode (Режим разработки).

      Теперь вы знаете, что все работает нормально, и вам нужно будет вернуться в раздел SSL/TLS на панели управления Cloudflare, перейти на вкладку Origin Server (Сервер Origin) и включить опцию Authenticated Origin Pulls (Запросы pull ЦС Origin с аутентификацией).

      Заключение

      В этом обучающем модуле мы защитили сайт на базе Nginx посредством шифрования трафика между Cloudflare и сервером Nginx с использованием сертификата ЦС Origin от Cloudflare. Затем мы настроили запросы pull ЦС Origin с аутентификацией на сервере Nginx, чтобы он принимал только запросы с серверов Cloudflare, и чтобы никто больше не мог подключиться к серверу Nginx напрямую.



      Source link

      Хостинг сайта с использованием Cloudflare и Nginx в Ubuntu 20.04


      Автор выбрал фонд Electronic Frontier Foundation для получения пожертвований в рамках программы Write for DOnations.

      Введение

      Cloudflare — это служба, располагающаяся между посетителем и сервером владельца сайта, выступающая как обратный прокси-сервер для сайтов. Cloudflare предоставляет сеть доставки контента (CDN), а также защиту от DDoS и распределенные службы сервера доменных имен.

      Nginx — это популярный веб-сервер, на котором размещены многие крупнейшие сайты с самым большим трафиком в Интернете. Организации часто обслуживают сайты с помощью Nginx и используют Cloudflare как поставщика CDN и DNS.

      В этом обучающем модуле вы научитесь защищать свой сайт, обслуживаемый Nginx, сертификатом ЦС Origin от Cloudflare и настраивать Nginx для использования запросов pull с аутентификацией. Преимущества такой системы заключаются в том, что вы используете CDN и быстрое разрешение DNS от Cloudflare и гарантируете проведение всех соединений через Cloudflare. Это не даст вредоносным запросам достичь вашего сервера.

      Предварительные требования

      Для прохождения данного обучающего руководства вам потребуется следующее:

      Шаг 1 — Генерирование сертификата TLS от ЦС Origin

      Центр сертификации Cloudflare Origin позволяет сгенерировать бесплатный сертификат TLS, подписанный Cloudflare, для установки на ваш сервер Nginx. Используя сгенерированный TLS сертификат TLS Cloudflare, вы можете защитить соединение между серверами Cloudflare и вашим сервером Nginx.

      Для генерирования сертификата с использованием ЦС Origin выполните вход в свою учетную запись Cloudflare через браузер. Выберите домен, который хотите защитить, и перейдите в раздел SSL/TLS панели управления Cloudflare. Откройте вкладку Origin Server (Сервер Origin) и нажмите кнопку Create Certificate (Создать сертификат):

      Опция создания сертификата в панели управления Cloudflare

      Оставьте выбранной опцию по умолчанию Let Cloudflare generate a private key and a CSR (Позволить Cloudflare сгенерировать закрытый ключ и CSR).

      Опции графического интерфейса ЦС Origin

      Нажмите Next (Далее), и вы увидите диалоговое окно с сертификатом Origin и закрытым ключом. Вам потребуется переместить сертификат Origin и закрытый ключ с сервера Cloudflare на ваш сервер. Для дополнительной безопасности информация закрытого ключа больше не будет отображаться, поэтому вам следует скопировать ключ на свой сервер, прежде чем нажать OK.

      Диалоговое окно с сертификатом Origin и закрытым ключом

      Мы будем использовать каталог /etc/ssl на сервере для хранения сертификата Origin и файлов закрытого ключа. Эта папка уже существует на сервере.

      Вначале скопируйте содержимое сертификата Origin, отображаемое в диалоговом окне вашего браузера.

      Затем откройте на сервере файл /etc/ssl/cert.pem в предпочитаемом текстовом редакторе:

      • sudo nano /etc/ssl/cert.pem

      Добавьте в файл содержимое сертификата. Сохраните файл и закройте редактор.

      Затем вернитесь в браузер и скопируйте содержимое закрытого ключа. Откройте файл /etc/ssl/key.pem для редактирования:

      • sudo nano /etc/ssl/key.pem

      Вставьте в файл закрытый ключ, закройте файл и выйдите из редактора.

      Примечание. Иногда при копировании сертификата и ключа из панели управления Cloudflare и их вставке в соответствующие файлы на сервере в файлы могут быть добавлены пустые строки. Nginx рассматривает такие сертификаты и ключи как некорректные, поэтому следует убедиться, что в файлах нет пустых строк.

      Предупреждение. Сертификату ЦС Cloudflare Origin доверяет только Cloudflare, и поэтому его следует использовать только на серверах Origin, имеющих активное подключение к Cloudflare. Если вы приостановите или отключите Cloudflare в любой момент, при обработке сертификата ЦС Origin будет выведена ошибка отсутствия доверия к сертификату.

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

      Шаг 2 — Установка сертификата ЦС Origin в Nginx

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

      Для начала убедитесь, что брандмауэр UFW разрешает трафик HTTPS. Включите опцию Nginx Full, которая открывает порт 80 (HTTP) и порт 443 (HTTPS):

      • sudo ufw allow 'Nginx Full'

      Перезагрузите UFW:

      Убедитесь, что новые правила разрешены и брандмауэр UFW активен:

      Результат должен будет выглядеть следующим образом:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

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

      • sudo rm /etc/nginx/sites-enabled/default

      Затем откройте файл конфигурации Nginx для вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Файл должен выглядеть следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/your_domain/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name your_domain www.your_domain;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      
      

      Мы изменим конфигурацию Nginx, чтобы она выполняла следующее:

      • Прослушивание порта 80 и перенаправление всех запросов с использованием https.
      • Прослушивание порта 443 и использование сертификата Origin и закрытого ключа, добавленных на предыдущем шаге.

      Измените файл, чтобы он выглядел следующим образом:

      /etc/nginx/sites-available/your_domain

      server {
          listen 80;
          listen [::]:80;
          server_name your_domain www.your_domain;
          return 302 https://$server_name$request_uri;
      }
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
      
          server_name your_domain www.your_domain;
      
          root /var/www/your_domain/html;
          index index.html index.htm index.nginx-debian.html;
      
      
          location / {
                  try_files $uri $uri/ =404;
          }
      }
      

      Сохраните файл и выйдите из редактора.

      Протестируйте файлы конфигурации Nginx на отсутствие ошибок синтаксиса:

      Если вы не обнаружите проблем, перезапустите Nginx для внесения изменений:

      • sudo systemctl restart nginx

      Откройте раздел SSL/TLS панели управления Cloudflare, перейдите на вкладку Overview (Обзор) и измените режим шифрования SSL/TLS на Full (strict) (Полный (строгий)). Это предпишет Cloudflare всегда шифровать соединение между Cloudflare и вашим сервером Nginx.

      Активация полного (строгого) режима SSL на панели управления Cloudflare

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

      В следующем разделе мы настроим аутентификацию запросов pull ЦС Origin для подтверждения того, что ваш сервер взаимодействует именно с Cloudflare, а не с каким-то другим сервером. Так мы настроим Nginx принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare, а все запросы, не проходящие через Cloudflare, будут отбрасываться.

      Шаг 3 — Настройка запросов pull ЦС Origin с аутентификацией

      Сертификат ЦС Origin помогает Cloudflare подтверждать взаимодействие с правильным сервером Origin. На этом шаге мы используем аутентификацию клиента TLS, чтобы подтвердить взаимодействие вашего сервера Nginx с Cloudflare.

      При установлении связи TLS с аутентификацией клиента обе стороны предоставляют сертификат для проверки. Сервер Origin настроен так, чтобы принимать только те запросы, в которых используется действующий сертификат клиента от Cloudflare. Запросы, не проходящие через Cloudflare, будут отклоняться, поскольку у них не будет сертификата Cloudflare. Это означает, что злоумышленники не смогут обходить меры безопасности Cloudflare и подключаться к вашему серверу Nginx напрямую.

      Cloudflare предоставляет сертификаты, подписанные ЦС со следующим сертификатом:

      -----BEGIN CERTIFICATE-----
      MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNV
      BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmln
      aW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
      cm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkx
      MDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNV
      BAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYD
      VQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQD
      ExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
      ggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI
      42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20e
      ihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBw
      hLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoY
      QSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3
      Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRn
      aL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5
      lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGR
      PpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5Hh
      CvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa
      +4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMB
      AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1Ud
      DgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REz
      alfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1
      QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3IS
      zVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoX
      VcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz
      6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z
      0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc
      5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/
      fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2j
      bA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGm
      iYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07F
      AnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tM
      fVQ6VpyjEXdiIXWUq/o=
      -----END CERTIFICATE-----
      

      Также вы можете загрузить сертификат напрямую из Cloudflare здесь.

      Скопируйте этот сертификат.

      Затем создайте файл /etc/ssl/cloudflare.crt для хранения сертификата Cloudflare:

      • sudo nano /etc/ssl/cloudflare.crt

      Добавьте сертификат в файл. Сохраните файл и выйдите из редактора.

      Обновите конфигурацию Nginx для использования запросов pull ЦС Origin с аутентификацией TLS. Откройте файл конфигурации вашего домена:

      • sudo nano /etc/nginx/sites-available/your_domain

      Добавьте директивы ssl_client_certificate и ssl_verify_client, как показано в следующем примере:

      /etc/nginx/sites-available/your_domain

      . . .
      
      server {
      
          # SSL configuration
      
          listen 443 ssl http2;
          listen [::]:443 ssl http2;
          ssl_certificate         /etc/ssl/cert.pem;
          ssl_certificate_key     /etc/ssl/key.pem;
          ssl_client_certificate /etc/ssl/cloudflare.crt;
          ssl_verify_client on;
      
          . . .
      

      Сохраните файл и выйдите из редактора.

      Проведите тестирование Nginx и убедитесь, что в вашей конфигурации Nginx нет ошибок синтаксиса:

      Если проблем обнаружено не будет, перезапустите Nginx для активации изменений:

      • sudo systemctl restart nginx

      Для аутентификации запросов pull откройте раздел SSL/TLS в панели управления Cloudflare, перейдите на вкладку Origin Server (Сервер Origin) и включите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией).

      Включить запросы pull сервера Origin с аутентификацией

      Откройте сайт по адресу https://your_domain для проверки правильности настройки. Как и в предыдущем случае, вы увидите свою домашнюю страницу.

      Чтобы ваш сервер принимал только запросы, подписанные ЦС Cloudflare, отключите опцию Authenticated Origin Pulls (Запросы pull сервера Origin с аутентификацией) и перезагрузите свой сайт. Вы должны получить следующее сообщение об ошибке:

      Сообщение об ошибке

      Ваш сервер Origin выдаст ошибку, если ЦС Cloudflare не подпишет запрос.

      Примечание. Большинство браузеров кэшируют запросы, и, чтобы увидеть вышеуказанное изменение, вы можете использовать режим инкогнито/конфиденциального просмотра в своем браузере. Чтобы не дать Cloudflare кэшировать запросы во время настройки сайта, перейдите на вкладку Overview (Обзор) в панели управления Cloudflare и включите опцию Development Mode (Режим разработки).

      Теперь вы знаете, что все работает нормально, и вам нужно будет вернуться в раздел SSL/TLS на панели управления Cloudflare, перейти на вкладку Origin Server (Сервер Origin) и включить опцию Authenticated Origin Pulls (Запросы pull ЦС Origin с аутентификацией).

      Заключение

      В этом обучающем модуле мы защитили сайт на базе Nginx посредством шифрования трафика между Cloudflare и сервером Nginx с использованием сертификата ЦС Origin от Cloudflare. Затем мы настроили запросы pull ЦС Origin с аутентификацией на сервере Nginx, чтобы он принимал только запросы с серверов Cloudflare, и чтобы никто другой не мог подключиться к серверу Nginx напрямую.



      Source link

      Запуск нескольких версий PHP на одном сервере с использованием Apache и PHP-FPM в CentOS 7


      Автор выбрал COVID-19 Relief Fund для получения пожертвования в рамках программы Write for DOnations.

      Введение

      Веб-сервер Apache использует виртуальные хосты для управления несколькими доменами в одной системе. PHP-FPM использует демона для управления несколькими версиями PHP в одной системе. Вы можете использовать Apache и PHP-FPM для одновременного хостинга на одном сервере нескольких веб-приложений PHP на основе разных версий PHP. Эта возможность полезна, поскольку разным приложениям могут требоваться разные версии PHP, но некоторые серверные комплексы, в том числе комплекс LAMP в стандартной конфигурации, могут работать только с одной версией. Сочетание Apache с PHP-FPM более экономично по сравнению с хостингом каждого приложения на отдельном экземпляре сервера.

      Также PHP-FPM предлагает разные варианты конфигурации для регистрации данных stderr и stdout, аварийной перезагрузки и адаптивного создания процессов, что полезно для сайтов с высокой нагрузкой. Использование Apache с PHP-FPM — один из лучших вариантов хостинга приложений PHP, особенно с точки зрения производительности.

      В этом обучающем руководстве мы настроим два сайта PHP для работы на одном экземпляре сервера. Каждый сайт будет использовать собственный домен, и на каждом домене будет использоваться собственная версия PHP. Первый сайт site1.your_domain развернет PHP 7.0. Второй сайт site2.your_domain развернет PHP 7.2.

      Предварительные требования

      • Один сервер CentOS 7 с не менее чем 1 ГБ оперативной памяти, настроенный согласно руководству Начальная настройка сервера CentOS 7, с пользователем non-root user с привилегиями sudo и брандмауэром.
      • Веб-сервер Apache, установленный и настроенный в соответствии с указаниями руководства Установка веб-сервера Apache в CentOS 7​​​.
      • Доменное имя, настроенное так, чтобы указывать на ваш сервер CentOS 7. Информацию о том, как сделать так, чтобы домены указывали на дроплеты DigitalOcean, можно найти в руководстве Создание указаний на серверы имен DigitalOcean из общих реестров доменов. Для целей настоящего обучающего модуля мы используем два субдомена, каждый из которых указан с записью A в наших настройках DNS: site1.your_domain и site2.your_domain.

      Шаг 1 — Установка PHP версий 7.0 и 7.2 с помощью PHP-FPM

      После выполнения предварительных требований мы установим версии PHP 7.0 и 7.2. Репозиторий SCL (Software Collections) содержит множество версий стеков PHP для систем CentOS 7. Если вам нужна абсолютно новая версия PHP, которой нет на SCL, проверьте remi PPA (персональные архивы пакетов).

      Начнем с установки репозитория SCL в вашу систему:

      • sudo yum install centos-release-scl -y

      Сначала узнаем, какие версии PHP 7 доступны в SCL:

      • sudo yum list rh-php7[0-9].x86_64

      Вывод будет выглядеть следующим образом:

      Output

      Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh

      Вы заметите, что доступна также новейшая версия, PHP 7.3. Но в наших примерах мы установим версии 7.0 и 7.2.

      Начнем с более ранней версии. Установите rh-php70 и rh-php70-php-fpm​​​:

      • sudo yum install rh-php70 rh-php70-php-fpm -y
      • rh-php70 — это метапакет, который запускает приложения PHP.
      • rh-php70-php-fpm​​​ предоставляет интерпретатор Fast Process Manager, который работает как демон и принимает запросы Fast/CGI.

      Повторите процедуру для PHP версии 7.2. Установите rh-php72 и rh-php72-php-fpm​​​.

      • sudo yum install rh-php72 rh-php72-php-fpm -y

      Далее запустите следующие команды для начала использования обеих коллекций Software Collections:

      • sudo scl enable rh-php70 bash
      • sudo scl enable rh-php72 bash

      По умолчанию обе версии PHP прослушивают порт 9000. Но в этом обучающем руководстве мы хотим запустить две версии одновременно. Поэтому назначим два новых порта:

      Для этого откройте /etc/opt/rh/rh-php70/php-fpm.d/www.conf в предпочитаемом текстовом редакторе и измените каждое представление 9000 на 9002. Затем сохраните и закройте файл и повторите процедуру для /etc/opt/rh/rh-php72/php-fpm.d/www.conf, только сейчас замените 9000 на 9003. Вы можете использовать эти две команды sed​​​ поочередно, чтобы выполнить замены:

      • sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
      • sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf

      Сейчас вы назначили выделенный порт для каждой из ваших служб PHP. Перед выполнением этих изменений необходимо, тем не менее, добавить порты в вашу конфигурацию SELinux.

      SELinux — это сокращение от Security Enhanced Linux, которое активируется по умолчанию на CentOS 7. Необходимо добавить новые порты 9002 и 9003 в вашу базу данных SELinux и назначить их для ваших служб httpd, иначе ваши приложения не будут запускаться. Для выполнения этой задачи используйте команду semanage:

      • sudo semanage port -a -t http_port_t -p tcp 9002
      • sudo semanage port -a -t http_port_t -p tcp 9003

      Флаг -a указывает на то, что вы добавляете объект в базу данных. Флаг -t указывает тип объекта, которым в данном случае является http_port_t​​​. А флаг -p определяет протокол tcp​​​. Дополнительную информацию о SELinux и команде semanage можно найти в этом обучающем руководстве или обратившись к официальной документации SELinux.

      Теперь вы готовы запустить и активировать ваши службы PHP. Начнем со службы rh-php70-php-fpm и активируем ее запуск во время загрузки:

      • sudo systemctl start rh-php70-php-fpm
      • sudo systemctl enable rh-php70-php-fpm

      Затем проверьте статус службы rh-php70-php-fpm:

      • sudo systemctl status rh-php70-php-fpm

      Вывод будет выглядеть следующим образом:

      Output

      ● rh-php70-php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/rh-php70-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-04-18 04:49:59 UTC; 1min 6s ago Main PID: 1852 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" CGroup: /system.slice/rh-php70-php-fpm.service ├─1852 php-fpm: master process (/etc/opt/rh/rh-php70/php-fpm.conf) ├─1853 php-fpm: pool www ├─1854 php-fpm: pool www ├─1855 php-fpm: pool www ├─1856 php-fpm: pool www └─1857 php-fpm: pool www Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager... Apr 18 04:49:59 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

      Повторите эту процедуру, запустите службу rh-php72-php-fpm и активируйте ее запуск во время загрузки:

      • sudo systemctl start rh-php72-php-fpm
      • sudo systemctl enable rh-php72-php-fpm

      Затем проверьте статус службы rh-php72-php-fpm:

      • sudo systemctl status rh-php72-php-fpm

      Другой вывод будет выглядеть следующим образом:

      Output

      ● rh-php72-php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-04-18 04:50:04 UTC; 1min 59s ago Main PID: 1876 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" CGroup: /system.slice/rh-php72-php-fpm.service ├─1876 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf) ├─1877 php-fpm: pool www ├─1878 php-fpm: pool www ├─1879 php-fpm: pool www ├─1880 php-fpm: pool www └─1881 php-fpm: pool www Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Starting The PHP FastCGI Process Manager... Apr 18 04:50:04 centos-s-1vcpu-1gb-blr1-01 systemd[1]: Started The PHP FastCGI Process Manager.

      Мы установили на сервере две версии PHP. Теперь создадим структуру каталогов для каждого сайта, который будем развертывать.

      Шаг 2 — Создание структур каталогов для обоих сайтов

      В этом разделе мы создадим корневой каталог документов и страницу индекса для каждого из двух сайтов.

      Вначале создайте корневые каталоги документов для site1.your_domain и site2.your_domain:

      • sudo mkdir /var/www/site1.your_domain
      • sudo mkdir /var/www/site2.your_domain

      По умолчанию веб-сервер Apache работает как пользователь apache и группа apache. Поэтому /var/www/ и все его файлы и подкаталоги также должны принадлежать им. Запустите следующие команды для проверки правильности владения и разрешений корневых каталогов вашего веб-сайта:

      • sudo chown -R apache:apache /var/www/site1.your_domain
      • sudo chown -R apache:apache /var/www/site2.your_domain
      • sudo chmod -R 755 /var/www/site1.your_domain
      • sudo chmod -R 755 /var/www/site2.your_domain

      Команда chown меняет владельца двух каталогов веб-сайта на пользователя apache и группу apache. Команда chmod меняет разрешения, связанные с этим и другими пользователями и группами.

      Далее вы создадите файл info.php в корневом каталоге каждого сайта. В нем будет отображаться информация о версии PHP для каждого сайта. Начнем с site1:

      • sudo vi /var/www/site1.your_domain/info.php

      Добавьте следующую строку:

      /var/www/site1.your_domain/info.php

      <?php phpinfo(); ?>
      

      Сохраните и закройте файл. Скопируйте созданный файл info.php в site2:

      • sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php

      Теперь на вашем веб-сервере имеются корневые каталоги документов, которые требуются каждому сайту для предоставления данных посетителям. Далее мы настроим веб-сервер Apache для работы с двумя разными версиями PHP.

      Шаг 3 — Настройка Apache для обоих сайтов

      В этом разделе мы создадим два файла конфигурации виртуального хоста. Это позволит двум нашим сайтам одновременно работать с двумя разными версиями PHP.

      Для обслуживания этого контента Apache необходимо создать файл виртуального хоста с правильными директивами. Вы создадите два новых файла конфигурации виртуального хоста внутри каталога /etc/httpd/conf.d/.

      Вначале создайте новый файл конфигурации виртуального хоста для сайта site1.your_domain. Здесь вы предписываете Apache использовать для рендеринга содержимого PHP 7.0:

      • sudo vi /etc/httpd/conf.d/site1.your_domain.conf

      Добавьте в файл следующее: Убедитесь, что путь к каталогу сайта, имя сервера, порт и версия PHP соответствуют вашей настройке:

      /etc/httpd/conf.d/site1.your_domain.conf

      
      <VirtualHost *:80>
           ServerAdmin [email protected]site1.your_domain
           ServerName site1.your_domain
           DocumentRoot /var/www/site1.your_domain
           DirectoryIndex info.php
           SetHandler "proxy:fcgi://127.0.0.1:9002
           ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
           AddHandler php70-fcgi .php
           Action php70-fcgi /cgi-bin/php70.fcgi
           ErrorLog /var/log/httpd/site1.your_domain_error.log
           CustomLog /var/log/httpd/site1.your_domain_access.log combined
      </VirtualHost>
      

      Для DocumentRoot вы указываете путь корневого каталога вашего веб-сайта. Для ServerAdmin вы добавляете адрес электронной почты, к которому имеет доступ администратор сайта your_domain. Для ServerName вы добавляете url для вашего первого субдомена. Для SetHandler вы указываете порт 9002. Остальные директивы также настраивают вашу службу для развертывания PHP 7.0.

      Сохраните и закройте файл.

      Теперь создайте новый файл конфигурации виртуального хоста для сайта site2.your_domain. Для этого субдомена мы будем развертывать PHP 7.2:

      • sudo vi /etc/httpd/conf.d/site2.your_domain.conf

      Добавьте в файл следующее: Убедитесь, что путь к каталогу сайта, имя сервера, порт и версия PHP соответствуют уникальным параметрам вашей системы:

      /etc/httpd/conf.d/site2.your_domain.conf

      <VirtualHost *:80>
           ServerAdmin [email protected]site2.your_domain
           ServerName site2.your_domain
           DocumentRoot /var/www/site2.your_domain
           DirectoryIndex info.php
           SetHandler "proxy:fcgi://127.0.0.1:9003
           ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
           AddHandler php72-fcgi .php
           Action php72-fcgi /cgi-bin/php72.fcgi
           ErrorLog /var/log/httpd/site2.your_domain_error.log
           CustomLog /var/log/httpd/site2.your_domain_access.log combined
      </VirtualHost>
      

      Сохраните файл и закройте его после завершения. Проверьте файл конфигурации Apache на наличие синтаксических ошибок:

      • sudo apachectl configtest

      Вы увидите вывод с текстом Syntax OK:

      Output

      Перезапустите службу Apache, чтобы применить изменения:

      • sudo systemctl restart httpd

      Мы настроили Apache для обслуживания каждого из сайтов и теперь протестируем их и убедимся, что на них работают правильные версии PHP.

      Шаг 4 — Тестирование сайтов

      Мы настроили два сайта для работы с двумя разными версиями PHP. Теперь проверим результаты.

      Откройте в браузере сайты http://site1.your_domain и http://site2.your_domain. Вы увидите две страницы, выглядящие следующим образом:

      Информационная страницаPHP 7.0 Информационная страница PHP 7.2

      Обратите внимание на заголовки. На первой странице указано, что на сайте site1.your_domain развернута версия PHP 7.0. На второй странице указано, что на сайте site2.your_domain развернута версия PHP 7.2.

      Мы протестировали сайты и теперь можем удалить файлы info.php. Эти файлы представляют собой угрозу безопасности, поскольку они содержат важную информацию о вашем сервере и при этом доступны неуполномоченным пользователям. Удалите файлы:

      • sudo rm -rf /var/www/site1.your_domain/info.php
      • sudo rm -rf /var/www/site2.your_domain/info.php

      Теперь у вас имеется один сервер CentOS 7, обслуживающий два сайта с двумя разными версиями PHP. Однако PHP-FPM можно применять и для других целей.

      Заключение

      Мы объединили виртуальные хосты и PHP-FPM для обслуживания нескольких сайтов и нескольких версий PHP на одном сервере. Количество сайтов PHP и версий PHP, которые может обслуживать ваш сервер Apache, зависит исключительно от вычислительной мощности сервера.

      Теперь вы можете рассмотреть возможность изучения более расширенных функций PHP-FPM, например порождение процесса или правил регистрации sdtout и stderr​​​​​. Или же теперь вы можете защитить свои веб-сайты. Для этого используйте наш обучающий модуль по защите сайтов с помощью бесплатных сертификатов TLS/SSL от Let’s Encrypt.



      Source link