https для локальной разработки, dev окружения, docker

Технологии
Больше по теме
Иногда  при разработке и/или доработке сайта требуется использовать  https вместо http.  Решается это довольно просто.

Иногда при разработке и/или доработке сайта требуется использовать https вместо http. Решается это довольно просто.

В первую очередь устанавливаем mkcert для выпуска локального сертификата и установки локального центра сертификации. https://github.com/FiloSottile/mkcert

После установки локальный центр сертификации

mksert -install

Теперь создаем директорию для сертификатов. Переходим в нее и генерируем сертификат для домена localhost, site.ru, msk.site.ru

mkdir /etc/nginx/certs
cd /etc/nginx/certs
mkcert -cert-file localhost.crt -key-file localhost.key localhost site.ru msk.site.ru

Теперь в конфигурацию nginx добавляем сертификаты. Ниже примерный конфиг.

upstream backend {
server php:8080;
}

server {
listen 80 default_server;
server_name localhost _;
return 301 https://$host$request_uri;
}


server {
listen 443 ssl;
server_name localhost _;
# -- добавляем строчки например так
ssl_certificate /etc/nginx/certs/localhost.crt;
ssl_certificate_key /etc/nginx/certs/localhost.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# ----
server_name_in_redirect off;
proxy_ignore_client_abort off;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;


proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_buffering off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;


set $proxyserver "http://backend";
set $docroot "/var/www/html";

index index.php;
root /var/www/html;

location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}

include custom/conf.d/bitrix.conf;
}

Это все, можно перезагружать и смотреть результат. В само низу пример результата (Docker-compose) можно пропустить

Docker-compose

Для докера пробрасывает сертификаты в контейнер и новый конфиг nginx. В данном случае сертификаты лежат рядом

docker-compose.yml

nginx:
build:
context: nginx
dockerfile: Dockerfile-composer
container_name: nginx
networks:
- frontend
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/certs:/etc/nginx/certs
- ./nginx/custom:/etc/nginx/custom
- ./..:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf

nginx.conf

events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name my-wordpress-blog.local;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost _;

# -- добавляем строчки например так
ssl_certificate /etc/nginx/certs/localhost.crt;
ssl_certificate_key /etc/nginx/certs/localhost.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
# ----

# ... остальные натсройки
}
}

Результат https для localhost

Перезагружаем nginx или docker контейнер и смотрим результат в браузере

Иногда  при разработке и/или доработке сайта требуется использовать  https вместо http.  Решается это довольно просто.-2