Docker 의 Nginx 에 HTTPS 환경 을 구축 합 니 다.

8081 단어 DockerNginx
애플 과 위 챗 애플 리 케 이 션 이 HTTPS 프로 토 콜 전송 을 강제 하면 서 점점 더 많은 회사 와 기업 들 이 HTTPS 를 사용 하기 시작 했다.다음은 Docker 용기 에 있 는 Nginx 에 HTTPS 환경 을 만 드 는 것 을 공유 하 겠 습 니 다.
HTTPS 가 뭐야?
하이퍼텍스트 전송 보안 프로 토 콜 (영어: Hypertext Transfer Protocol Secure, 줄 임 말: HTTPS, 흔히 HTTP over TLS, HTTP over SSL 또는 HTTP Secure) 은 컴퓨터 네트워크 를 통 해 안전 한 통신 을 하 는 전송 프로 토 콜 입 니 다.HTTPS 는 HTTP 를 통 해 통신 하지만 SSL / TLS 를 이용 하여 패 킷 을 암호 화 합 니 다.HTTPS 개발 의 주요 목적 은 사이트 서버 에 대한 인증 을 제공 하고 교환 데이터 의 프라이버시 와 완전 성 을 보호 하 는 것 이다.이 협 의 는 네트워크 회사 (Netscape) 가 1994 년 에 처음으로 제기 한 후에 인터넷 으로 확대 되 었 다.위 키 피 디 아 에서 온 이 소 개 는 HTTPS 가 무엇 인지, 그리고 HTTPS 가 무엇 인지 설명 하 는 것 이 쉬 운 일이 아 닙 니 다. 본 고 는 토론 을 하지 않 고 관심 이 있 는 친 구 는 검색 해서 알 아 볼 수 있 습 니 다.
인증 서 를 어떻게 획득 합 니까?
국내 에 많은 서비스 업 체 가 증 서 를 판매 하 는데 가격 이 수천 에서 수만 까지 다양 하지만 우 리 는 아 리 클 라 우 드, 텐 센트 클 라 우 드, 그리고 클 라 우 드 등 을 통 해 무료 증 서 를 얻 을 수 있다. 본 고 는 아 리 클 라 우 드, 텐 센트 클 라 우 드 등 을 중심 으로 증 서 를 신청 하여 HTTPS 환경 을 구축 할 것 이다.
준비 작업
도 메 인 이름 두 개 준비 하기
두 개의 인증 서 를 신청 하기 위해 2 급 도 메 인 이름 을 준 비 했 습 니 다: aliyun. 0558 web. com, tencent. 0558 web. com, 도 메 인 이름 을 해당 하 는 서버 로 분석 합 니 다.
Docker 를 사용 하여 Nginx 환경 만 들 기
우선 이 컴퓨터 에 Docker 가 설치 되 어 있 는 지 확인 하고 다음 명령 을 사용 하여 nginx image 를 끌 어 옵 니 다.
docker pull nginx

폴 더 만 들 기
서버 에 세 개의 폴 더 를 만 듭 니 다. nginx 는 인증서 와 nginx 프로필 을 저장 하 는 데 사 용 됩 니 다. ww 는 프로젝트 코드 를 저장 하 는 데 사 용 됩 니 다. ssl 은 인증 서 를 저장 하 는 데 사 용 됩 니 다. 현재 디 렉 터 리 에서 폴 더 를 만 드 는 것 을 보 여 줍 니 다.
mkdir -p nginx/{aliyun,tencent} www/{aliyun,tencent} ssl/{aliyun,tencent}

다음은 아 리 운 과 텐 센트 클 라 우 드 에서 신청 한 SSL 인증 서 를 보 여 주 며 HTTPS 환경 을 구축 하 겠 습 니 다.
아 리 운
SSL 인증서 신청
아 리 클 라 우 드 플랫폼 에 로그 인하 여 콘 솔 에 들 어 갑 니 다 > 제품 과 서 비 스 를 선택 합 니 다 > SSL 인증 서 를 검색 합 니 다. SSL 인증서 페이지 에서 오른쪽 상단 의 구 매 인증 서 를 클릭 합 니 다. 구 매 페이지 에서 제공 하 는 인증서 의 종 류 는 여러 가지 가 있 습 니 다. 매번 에 저 는 반나절 을 찾 아야 무료 인증 서 를 찾 을 수 있 습 니 다. 민간 부자 나 기업 은 유 료 인증 서 를 직접 구 매 할 수 있 습 니 다.저 와 같이 무료 인증 서 를 선택 하신 다 면 다음 과 같은 몇 가 지 를 기억 하 십시오. 브랜드 (Symantec) > 보호 유형 (1 개 도 메 인 이름) > 인증서 유형 (무료 DV SSL) > 구 매 에 성공 한 후에 SSL 인증서 페이지 에서 방금 구 매 한 인증 서 를 볼 수 있 습 니 다. 자 료 를 보완 하고 심 사 를 통과 한 후에 저희 인증 서 를 다운로드 할 수 있 습 니 다. 본 고 는 nginx 에서 HTTPS 환경 을 구축 하 는 것 이기 때 문 입 니 다.그래서 여 기 는 Nginx 에 대한 인증 서 를 다운로드 합 니 다.
신청 이 성공 한 후 인증 서 를 다운로드 하여 / ssl / aliyun / 디 렉 터 리 에 업로드 합 니 다.
설정 nginx 프로필 작성
/ nginx / aliyun / 폴 더 에 설정 파일 을 작성 하여 docker 용기 에 표시 합 니 다.
events{
    worker_connections 1024;
}
http{

    server {
        listen 80;
        server_name localhost;
        root /usr/share/nginx/html;
    }
    
    server {
        listen 443;
        server_name localhost;
        # ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate   /etc/ssl/cert/*****.pem;
        ssl_certificate_key  /etc/ssl/cert/*****.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
            root html;
            index index.html index.htm;
        }
    }
}


항목 코드 추가
/ www / aliyun / 파일 에 index. html 를 새로 만 듭 니 다.

Hello aliyun

nginx 용기 만 들 기
nginx 용 기 를 실행 합 니 다. 이름 은 aliyun 입 니 다.
docker run 
-p 8080:80
-p 8081:443 
-v $PWD/nginx/aliyun/nginx.conf:/etc/nginx/nginx.conf 
-v $PWD/www/aliyun:/usr/share/nginx/html
-v $PWD/ssl/aliyun:/ect/nginx/cert/aliyun 
--name aliyun -d nginx

시작 후 다음 명령 을 사용 하여 Hello aliyun 에 지 는 지 확인 합 니 다. 출력 하면 시작 에 성 공 했 음 을 표시 합 니 다. 그렇지 않 으 면 docker logs 용기 ID 로 오류 로 그 를 볼 수 있 습 니 다.
curl 127.0.0.1:8080

바 인 딩 도 메 인 이름, 전송 포트
  • 서버 에 nginx 를 설치 하여 전송 포트 와 귀속 도 메 인 이름
  • 설치 에 성공 한 후 / etc / nginx / sites - available / 아래 에 aliyun. conf 를 새로 만 든 다음 설정 파일 을 작성 합 니 다.
    server {
        listen 80;
        server_name aliyun.0558web.com;
        
        return 301 https://$server_name:8081$request_uri
    }
    
    
  • 작성 후 / etc / nginx / sites - enabled / 에 소프트 연결 추가
  • cd ../sites-enabled
    #      
    ln -s ../sites-available/aliyun.conf aliyun.conf
    
    #             
    nginx -t
    
    #       nginx
    service nginx restart
    

    HTTPS 환경 성공 여부 테스트
    브 라 우 저 에 입력http://aliyun.0558web.com혹시https://aliyun.0558web.com:8081녹색 자 물 쇠 를 볼 수 있 습 니 다. 이때 아 리 클 라 우 드 가 제공 하 는 무료 SSL 인증 서 를 사용 합 니 다. 우 리 는 HTTPS 환경 을 성공 적 으로 구축 하 였 으 나 HTTPS 는 사용 할 수 있 지만 뒤에 포트 가 있 습 니 다. 이것 은 분명히 당신 이 원 하 는 것 이 아 닙 니 다. 아래 에 제 두 가지 해결 방법 을 공유 하 겠 습 니 다.
  • 한 서버 에 하나의 HTTPS 환경 만 만 들 면 포트 를 수정 할 수 있 습 니 다
  • docker run 
    #    80  ->docker   80  
    -p 80:80   
    #    443  ->docker   443  
    -p 443:443 
    -v $PWD/nginx/aliyun/nginx.conf:/etc/nginx/nginx.conf 
    -v $PWD/www/aliyun:/usr/share/nginx/html
    -v $PWD/ssl/aliyun:/ect/nginx/cert/aliyun 
    --name aliyun -d nginx
    
  • 서버 에 여러 개의 docker 용 기 를 만 들 고 용기 마다 HTTPS 환경 을 설정 하려 면 어떻게 해 야 합 니까?다음은 텐 센트 클 라 우 드 가 제공 하 는 무료 SSL 인증 서 를 신청 하여 시범 을 보 여 드 리 겠 습 니 다
  • 텐 센트 운
    신청서
    텐 센트 클 라 우 드 에 로그 인하 여 콘 솔 > 클 라 우 드 제품 > SSL 인증서 관 리 를 검색 하고 인증서 관리 페이지 에 들 어가 서 구 매 를 클릭 하고 도 메 인 네 임 형 무료 버 전 (DV) 을 선택 하여 무료 로 신청 합 니 다. 남 은 절차 와 아 리 클 라 우 드 의 차이 가 많 지 않 습 니 다. 자 료 를 보완 하여 인증서 아래 에 보 내 려 면 텐 센트 클 라 우 드 가 제공 하 는 SSL 을 통 해 프레젠테이션 을 하 십시오.
    nginx 프로필 작성
    nginx / tencent / 폴 더 에 설정 파일 을 추가 하여 docker 용기 에 표시 합 니 다.
    events {
        woker_connections 1024;
    }
    http {
        server{
            listen 80;
            server_name location;
            root /usr/share/nginx/html;
        }
    }
    

    프로젝트 코드 작성
    www / tencent / 폴 더 에 index. html 를 새로 만 듭 니 다.
    
    Hello Tencent
    

    시작 nginx
    nginx 용 기 를 실행 합 니 다. 이름: tencent
    docke run -p 8082:80
    -v $PWD/nginx/tencent/nginx.conf:/etc/nginx/nginx.conf 
    -v $PWD/www/tencent:/usr/share/nginx/html
    --name tencent -d nginx
    

    실행 성공 여 부 를 판단 합 니 다.
    curl 127.0.0.1:8082
    #    Hello Tencent       
    #       docker logs   ID      
    

    전송 포트 바 인 딩 도 메 인 이름
  • / etc / nginx / sites - available / 에서 새 프로필 tencent. conf
  • server{
        listen 80;
        server_name tencent.0558web.com;
        return 301 https://$server_name$request_uri
    }
    server {
    	listen 443 default_server ssl;
    	server_name tencent.0558web.com;
    	ssl_certificate /root/project/ssl/tencent/1_tencent.0558web.com_bundle.crt;
        	ssl_certificate_key /root/project/ssl/tencent/2_tencent.0558web.com.key;
        	ssl_session_timeout 5m;
        	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        	ssl_prefer_server_ciphers on;
    	    location /{
    		    index  index.html index.htm;
    		    proxy_pass http://tencent.0558web.com:8082;
    	    }
    }
    
    
  • 소프트 링크 를 추가 하여 nginx 를 다시 시작 합 니 다
  • #  /etc/nginx/sites-enabled/     
    ln -s /etc/nginx/sites-available/tencent.conf /etc/nginx/sites-enabled/tencent.conf
    
    #   nginx      
    nginx -t
    
    #   nginx
    service nginx restart
    

    이 럴 때 저 희 는 브 라 우 저 에서 tencent. 0558 web. com 을 열거 나...https://tencent.0558web.com초록색 자물쇠 가 다 보 여요.
    부 딪 힌 구덩이
  • no “ssl_certificate” is defined in server listening on SSL port while SSL handshaking, client: ,,,, server: 0.0.0.0:443

  • 대체로 감청 포트 에 인증서 가 설정 되 어 있 지 않 지만 이름 이 설정 되 어 있 고 nginx - t 도 잘못 보고 되 지 않 았 습 니 다. 아마도 우리 가 설정 한 443 서버 포트 가 감청 되 지 않 았 을 것 입 니 다.
    해결 방법:
    server{
        listen 443 default_server ssl;
        .
        .
        .
    }
    
  • the "ssl" directive is deprecated, use the "listen... ssl" directive instead in / etc / nginx / nginx. conf: 14 nginx 버 려 진 ssl 명령
  • 해결 방법
    server{
        #   ssl on 
        listen 443 ssl;
        # ssl on;
    }
    

    요약: 본 고 는 아 리 운 과 텐 센트 클 라 우 드 가 제공 하 는 무료 SSL 인증 서 를 공유 하여 docker 중의 nginx 에 HTTPS 환경 을 구축 하고 주로 nginx 의 포트 로 리 트 윗 했 습 니 다. 저 는 Nginx 에 대해 입문 단계 에 속 하기 때문에 글 에서 오류 와 부족 을 피 할 수 없습니다. 그리고 여러분 께 서 지적 해 주 십시오.
    케이스https://www.mphot.cn

    좋은 웹페이지 즐겨찾기