Настройка SSL в Nginx

Допустим Nginx установлен, сайт открывается по http, и мы хотим чтобы он открывался по https.

SSL сертификат можно получить бесплатно у Let’s Encrypt, например как я описывал в статье — Установка Certbot в Ubuntu.

Старую конфигурацию http мы изменим для переадресации запросов http на https, например:

server {
    listen 80;
    #listen [::]:80;
    server_name example.com;
    return 301 https://$server_name:443$request_uri;
}

Теперь приведу пример конфигурации для https, конфигурацию http и https для одного сайта можно поместить в один файл, например:

server {
    listen 80;
    #listen [::]:80;
    server_name example.com;
    return 301 https://$server_name:443$request_uri;
}

server {
   listen 443 ssl;
   ssl_protocols TLSv1.2;
   root /var/www/example;
   index index.php;
   access_log /var/log/nginx/example_com_access.log;
   error_log /var/log/nginx/example_com_error.log;
   server_name example.com;

   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

   ssl_stapling on;
   ssl_stapling_verify on;
   resolver 127.0.0.1 1.1.1.1 8.8.4.4;

   add_header Strict-Transport-Security "max-age=31536000";

   location / {
    try_files $uri $uri/ /index.php$is_args$args;
   }

   location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.2-fpm.sock;
      #fastcgi_pass localhost:9999;
   }

  location ~ /\. {
    deny all;
   }

  location ~ /\.ht {
     deny all;
    }

  location = /favicon.ico {
    log_not_found off;
    access_log off;
   }

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
   }

}

Подобный файл конфигурации можно создать для поддомена www.example.com.
Обязательно проверим установленную у вас версию php-fpm и изменим ссылку, также я указал TLS 1.2, так как по умолчанию могут использоваться устаревшие версии TLS 1.0 и 1.1.
В конце конфигурации я запретил доступ к скрытым файлам, отключил логи для файлов robots.txt, favicon.ico, в зависимости от движка сайта и потребностей конфигурацию можно расширить, пример конфигурации для WordPress я оставил по ссылке ниже.

Смотрите также мои статьи:

Оставьте комментарий

Добавить комментарий