Редирект http на https в nginx только для админки сайта

Необходимо настроить редирект http на https только для административной части сайта

В nginx’се это делается следующим образом, в секции

server {
listen                 80;
server_name   mysite.com;
root                    /sitedir/;
.....(ваши параметры);

Добавляем локейнш админки и редирект на 443 порт

location = /sitedir/admin/index.php {
rewrite ^(.*)$ https://$server_name$1 last;
}

После завершения настройки на порту 80, рисуем конфиг для порта 443 в том же файле конфигурации сайта

server {
listen                 443;
server_name   mysite.com;
include             ssl.conf;
root                   /sitedir/;
location = /www/admin/index.php {
.....(ваши параметры);
allow my.ip;
deny all;
}
}

Запись, выход

Оформляем ssl.conf

ssl                                 on;
ssl_protocols              SSLv3 TLSv1;
ssl_certificate             /etc/ssl/certs/nginx/nginx.pem;
ssl_certificate_key     /etc/ssl/certs/nginx/nginx.key;

Запись, выход

Генерим сертификат и ключ

openssl req -new -x509 -days 730 -nodes -out nginx.pem -keyout nginx.key

И кидаем их в папку указанную в ssl.conf

chmod 400 nginx.pem nginx.key

Все. Перегружаем nginx

P.S. nginx должен быть собран с поддержкой ssl

Александр Черных
системный администратор

Статьи по теме

0