Допустим 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 я оставил по ссылке ниже.
Смотрите также мои статьи:
- Как отключить TLS 1.0 и TLS 1.1 в Nginx
- Редирект HTTP на HTTPS в Nginx
- Параметр default_server
- Установка и настройка Nginx
- Установка WordPress и Nginx