Код:
http {
# TLS
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ecdh_curve secp384r1;
ssl_dhparam /path/to/dh4096.pem;
add_header Strict-Transport-Security "max-age=15552000";
# https://example.com
server { # http -> https
server_name example.com;
listen xx.xx.xx.xx:80;
listen [xxxx:xxxx:xxxx:xxxx::xxxx]:80;
return 301 https://$host$request_uri;
}
server { # www -> non-www
server_name www.example.com;
listen xx.xx.xx.xx:80;
listen xx.xx.xx.xx:443 ssl http2;
listen [xxxx:xxxx:xxxx:xxxx::xxxx]:80;
listen [xxxx:xxxx:xxxx:xxxx::xxxx]:443 ssl http2;
ssl_certificate /path/to/ecc/fullchain.cer;
ssl_certificate_key /path/to/ecc/example.com.key;
ssl_certificate /path/to/rsa/fullchain.cer;
ssl_certificate_key /path/to/rsa/example.com.key;
return 301 https://example.com$request_uri;
}
server { # main
server_name example.com;
listen xx.xx.xx.xx:443 ssl http2;
listen [xxxx:xxxx:xxxx:xxxx::xxxx]:443 ssl http2;
root /path/to/www/public;
ssl_certificate /path/to/ecc/fullchain.cer;
ssl_certificate_key /path/to/ecc/example.com.key;
ssl_certificate /path/to/rsa/fullchain.cer;
ssl_certificate_key /path/to/rsa/example.com.key;
location ~ /\. {
return 403;
}
location / {
try_files $uri $uri/ /index.php?$args =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php_fpm/example.com.sock;
fastcgi_buffering off;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /path/to/fastcgi.conf;
}
}
}
Конфиг для Nginx-а. Редирект с http на https, а так же с www на non-www.
Для www нужен TLS сертификат, иначе
Для просмотра ссылки Войди или Зарегистрируйся на
Для просмотра ссылки Войди или Зарегистрируйся работать не будет.
У меня в конфиге 2 сертификата. RSA 4096 и EC 384.