Допустим 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