Настройка HTTPS-сервера
http://nginx.org/ru/docs/http/configuring_https_servers.html
Можно настроить единый сервер, который обслуживает и http и https запросы.
#4 в одном: 1) http://velo, 2) https://velo, 3) http://www.velo, 4) https://www.velo
server {
listen 80;
listen 443 ssl;
server_name velo www.velo;
................
}
Но нам нужно, чтобы открывался только https://velo, а с остальных вариантов шел редирект на него.
Зададим настройки сервера https://velo. Для этого внесем в "Вариант-4" немного изменений:
добавим пути к сертификатам:
ssl_certificate /etc/nginx/ssl/velo.crt;
ssl_certificate_key /etc/nginx/ssl/velo.key;
и
listen 443 ssl; вместо listen 80;
Предварительно скопируем наши сертификаты в папку /etc/nginx/ssl,
Вариант-5
#Рабочая конфигурация c HTTPS и редиректами на него
#Вариант-5-начало
server {
listen 443 ssl;
server_name velo;
root /var/www/velo;
location ~ \\w+.(js|gif|jpg|png|css|htm)$ { #статика, отдаваемая напрямую
try_files $uri =404;
expires 24h;
}
location ~ ^/(robots.txt|sitemap.xml|favicon.ico)$ { #статика, отдаваемая напрямую
try_files $uri =404;
expires 48h;
}
location / {#все остальные запросы направляются на index_FC.php
rewrite (.+)/$ $1 permanent; #убираем '/' на конце URI
try_files 1 /index_FC.php?$args; #(С) похоже на хак:-), $args - необходимо для GET
}
location /index_FC.php {#единственный скрипт для FastCGI-server
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
include fastcgi.conf;
}
ssl_certificate /etc/nginx/ssl/velo.crt;
ssl_certificate_key /etc/nginx/ssl/velo.key;
}
server { #редиректы http://www.velo -> https://velo и https://www.velo -> https://velo
listen 443 ssl;
listen 80;
server_name www.velo;
return 301 https://velo$request_uri;
}
server { #редирект: http://velo -> https://velo
listen 80;
server_name velo;
return 301 https://velo$request_uri;
}
#Вариант-5-конец
PS
Можно было бы обойтись регулярками и впихнуть все в 1 сервер, но nginx-разработчики их не одобряют.
Желательно, но не обязательно добавить:
server {
....
keepalive_timeout 70;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
.....
}
Можно добавить в модуль
http {
....
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...
}
Установка приобретенного сертификата:
В файл velo.key помещаем наш приватный ключ;
В файл velo.crt помещаем промежуточный ключ(Intermediate CA) и ключ публичный ключ сайта (Web Server CERTIFICATE).