Docker, Nginx, Let's Encrypt로 정적 사이트를 정기적으로 배포
6188 단어 letsencryptdocker-composenginx도커
호스트 OS 측의 유지 보수가 수수하게 귀찮아지고 VPS에서 Firebase Hosting으로 이동하기 때문에 비망록. 호스트 측에 Docker Compose, certbot(Let's Encrypt)가 들어 있는 것이 전제
compose.yml
version: '2'
services:
http:
container_name: http
build:
context: ./
dockerfile: NginxDockerfile
volumes:
- "../public:/usr/share/nginx/html:ro"
- "./nginx.conf:/etc/nginx/nginx.conf:ro"
- "./nginx.vh.default.conf:/etc/nginx/conf.d/default.conf:ro"
- "/etc/nginx/ssl/dhparam.pem:/etc/nginx/ssl/dhparam.pem:ro"
- "/etc/letsencrypt:/etc/letsencrypt:ro"
- "/etc/localtime:/etc/localtime:ro"
ports:
- "80:80"
- "443:443"
지금은 version3라든가 되어 있는 것 같네요. 설정 파일이나 증명서 주위는 호스트(CentOS)측으로부터 밟거나 마운트하고 있다. ../public이 공개 디렉토리. 정적 콘텐츠 자체도 여기에 설정 파일과 함께 github의 private repository에서 clone 해왔다.
nginx.vh.default.conf
server {
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server_name ${serverName};
ssl_certificate /etc/letsencrypt/live/${serverName}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${serverName}/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';
client_max_body_size 64M;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/${serverName}/fullchain.pem;
resolver 8.8.8.8;
charset UTF-8;
charset_types text/css;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
함께 읽고 싶다 : htps : // 코 m/하루카씨/있어 ms/후 37f3바 b8 아5나 3f4f92
ssl_ciphers의 관계로 너무 오래된 IE로부터의 액세스는 할 수 없게 되는 설정이었다고 생각한다. 비늘 기억하지만 아마.
그리고 Strict-Transport-Security(HSTS)를 includeSubDomains 첨부로 유효하게 하고 있으므로, 서브 도메인을 운용하는 경우는 그쪽도 HSTS의 영향을 받는 것을 잊지 않도록 합시다, 등의 교훈이 있다.
HSTS라고 하는 것이 무엇인가라고 하면, 갑자기 HTTPS의 Expires 헤더 같은 것입니다. 야생 스테이크를 콘에서 브로콜리로 바꾸고 소금 후추로 먹는 것을 좋아합니다.
NginxDockerfile
FROM nginx:mainline-alpine
확실히.
crontab
docker-compose down
certbot renew
docker images -aq | xargs docker rmi -f
docker-compose build --no-cache
docker-compose up -d
crontab에서 시작하는 쉘 스크립트. 증명서의 갱신 다음에 이미지를 재생성하고 있다. 그 사이에는 사이트가 다운된다.
Reference
이 문제에 관하여(Docker, Nginx, Let's Encrypt로 정적 사이트를 정기적으로 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/oubakiou/items/b8dead8e77d9bdf4dabb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)