Nginx 설정 https (Let 's Encrypt)
IOS 가 http 요청 을 극력 차단 하고 있 기 때문에 시간 을 내 서 방금 배 치 된 웹 서비스 에 https 지원 을 추가 합 니 다.
90 일 무료 및 무한 재계약 가능 한 Let 's Encrypt 사용
Let 's Encrypt 는 양심 적 인 CA 입 니 다. 일반 상업 CA 의 가격 은 개인 적 으로 받 아들 이기 어렵 기 때 문 입 니 다.하지만 90 일간 무료 증 서 를 제공 했다.
인증 서 를 가 져 오 는 방식 도 간단 합 니 다. 완전 자동화 솔 루 션 을 제공 하기 때 문 입 니 다.
##
mkdir /var/www/letsencrypt
sudo apt-get install certbot
sudo certbot certonly --webroot --agree-tos --no-eff-email --email [email protected] -w /var/www/letsencrypt -d app.airoubo.com
OK 신 청 했 어.
Nginx 설정
challenge 디 렉 터 리 만 들 기:
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
letsencrypt. conf 파일 을 만 들 고 추가: / etc / nginx / snippets / letsencrypt. conf
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
ssl. conf 파일 을 만 들 고 추가: / etc / nginx / snippets / ssl. conf
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
주 프로필 수정:
# the upstream component nginx needs to connect to
upstream django {
server unix:///data/django/rouboApi/rouboapi.scok; # for a file socket
#server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name app.airoubo.com; # substitute your machine's IP address or FQDN
include /etc/nginx/snippets/letsencrypt.conf;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
#location /media {
# alias /path/to/your/mysite/media; # your Django project's media files - amend as required
#}
location /static {
alias /data/django/rouboApi/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location /roubo {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
## https
server {
# the port your site will be served on
listen 443 ssl http2;
listen [::]:443 ssl http2;
# the domain name it will serve for
server_name app.airoubo.com; # substitute your machine's IP address or FQDN
include /etc/nginx/snippets/letsencrypt.conf;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/app.airoubo.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app.airoubo.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/app.airoubo.com/fullchain.pem;
include /etc/nginx/snippets/ssl.conf;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
#location /media {
# alias /path/to/your/mysite/media; # your Django project's media files - amend as required
#}
location /static {
alias /data/django/rouboApi/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location /roubo {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
nginx 를 다시 시작 하면 https 접근 서 비 스 를 사용 할 수 있 습 니 다.
자동 연장
기한 은 90 일이 지만 무한 재계약 을 지원 한다.그 러 니까 우 리 는 정 해진 시간 에 재계약 만 하면 돼.
위의 certbot 도 구 를 사용 하면 man certbot 를 볼 수 있 습 니 다. 아래 에 renew 매개 변 수 는 인증 서 를 업데이트 하 는 데 사 용 됩 니 다.인증서 가 업 데 이 트 된 후에 nginx 서 비 스 를 다시 시작 해 야 하기 때 문 입 니 다. 마침 renew - hook 의 인자 가 있 습 니 다. renew 가 성공 한 후에 hook 에서 제 가 지정 한 스 크 립 트 를 실행 할 수 있 도록 지원 합 니 다.
/ etc / letsencrypt / renehook. sh 스 크 립 트 에 nginx 를 다시 시작 하 는 동작 을 추가 합 니 다:
#!/bin/bash
service nginx restart
루트 아래 crontab 증가:
sudo crontab -e
매월 1 일 8 시 에 업 데 이 트 를 실행 하도록 설정 합 니 다.
00 8 1 * * certbot renew --noninteractive --renew-hook /etc/letsencrypt/renewhook.sh
삐걱삐걱
CA 인증서 배포, 관리 등의 원리 에 대해 시간 이 있 으 면 알 아 봐 야 합 니 다. 평소에 많이 쓰 지 는 않 지만.Documentation - Let’s Encrypt - Free SSL/TLS Certificates
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.