~ docker 에 nginx 를 설치 하고 https 를 통 해 접근 하도록 설정 합 니 다.

4742 단어
  • 최신 nginx 의 docker image $docker pull nginx: latest
  • 다운로드
  • nginx 용 기 를 시작 하여 다음 명령 을 실행 하여 nginx container 를 시작 합 니 다
  • docker run --detach --name wx-nginx -p 443:443 -p 80:80 -v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:rw -v /home/evan/workspace/wxserver/nginx/config/nginx.conf:/etc/nginx/nginx.conf/:rw -v /home/evan/workspace/wxserver/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw -v /home/evan/workspace/wxserver/nginx/ logs: / var / log / nginx /: rw - v / home / evan / workspace / wxserver / nginx / ssl: / ssl /: rw - d nginx 맵 포트 443, https 요청 맵 포트 80, http 요청 에 사용;nginx 의 기본 첫 페이지 html 저장 디 렉 터 리 는 host 디스크 의 디 렉 터 리 에 비 칩 니 다. / home / evan / workspace / wxserver / nginx / data nginx 의 설정 파일 은 host 디스크 의 파일 에 비 칩 니 다. / home / evan / workspace / wxserver / nginx / config / nginx. conf 는 다음 과 같은 몇 가지 파일 을 준비 해 야 합 니 다.
    nginx 의 프로필 은 먼저 nginx. conf 파일 입 니 다. 기본 프로필 은 다음 과 같 습 니 다.
    nginx 를 실행 하 는 사용자
    user nginx;
    시작 프로 세 스 를 CPU 개수 와 동일 하 게 설정 합 니 다.
    worker_processes 1;
    전역 오류 로그 및 PID 파일 의 위치
    error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
    작업 모드 및 연결 수 상한 선
    events {\ # 단일 배경 work 프로 세 스 의 최대 병발 수 는 1024 worker connections 1024 로 설정 합 니 다.}
    http {\ # mime 형식 설정 include / etc / nginx / time. types; default type application / ocket - stream;
        #      
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log  /var/log/nginx/access.log  main;
    
    sendfile        on;
    #tcp_nopush     on;
    
        #         
    keepalive_timeout  65;
    
        #  GZIP  
    #gzip  on;
    
    include /etc/nginx/conf.d/*.conf;
    

    } 마지막 줄 에 다른 프로필 conf. d / default. conf 를 포함 하여 server 필드 를 설정 할 수 있 습 니 다.
    server {listen 80; \ # 80 포트 를 검색 합 니 다. 모든 접근 을 강제로 HTTPs 로 해 야 한다 면 이 줄 은 server name www. buagengen. com 을 취소 해 야 합 니 다. \ # 도 메 인 이름
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    
        #            
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    
    #        
    #error_page  404              /404.html;
    
    #         /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    

    } nginx 의 기본 홈 페이지 html 파일이 럴 때 IP 주 소 를 통 해 nginx 가 정의 하 는 html 파일 에 직접 접근 할 수 있 습 니 다.그러나 이때 의 방문 은 http 에 불과 합 니 다. https 의 방문 은 안 됩 니 다. nginx 서버 에 인증 서 를 추가 해 야 합 니 다.
  • openssl 생 성 인증 서 를 통 해 server. key 를 설정 합 니 다. 여 기 는 두 번 의 비밀 번 호 를 설정 해 야 합 니 다. openssl genrsa - des 3 - out server. key 1024 매개 변수 설정 입 니 다. 우선 이전에 설정 한 비밀 번 호 를 입력 해 야 합 니 다. openssl req - new - key server. key - out server. csr 를 입력 한 다음 에 다음 과 같은 정 보 를 입력 하고 대충 작성 하면 됩 니 다. 어차피 테스트 용
  • 입 니 다.
    Country Name (2 letter code) [AU]: 국가 명 State or Province Name (full name) [Some - State]: 성 Locality Name (eg, city) []: 도시 조직 명 (eg, company) [Internet Widgits Pty Ltd]: 회사 명 조직 단위 명 (eg, section) []: Common Name (예: server FQDN 또는 Your name) []: 사이트 도 메 인 이름 이메일 주소 []: 메 일 주소
    Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 여기에 비밀 번 호 를 입력 해 야 합 니 다 An optional company name []: RSA 비밀 키 를 쓰 십시오 (여기 도 이전에 설정 한 비밀 번 호 를 입력 해 야 합 니 다): openssl rsa - in server. key - out servernopwd. key 비밀 키 가 져 오기: openssl x509 - req - days 365 - in server. csr - signkey servernopwd. key - out server. crt 이 단 계 를 마 친 후에 우리 가 필요 로 하 는 인증서 파일 과 비밀 키 를 얻 었 습 니 다.
    server.crt server.key
  • nginx 서버 를 설정 합 니 다. https 접근 을 지원 합 니 다.그리고 프로필 default. conf 를 수정 하고 ssl 지원 을 추가 합 니 다.
  • server {listen 80; \ # 80 포트 를 검색 합 니 다. 모든 접근 을 강제로 HTTPs 로 해 야 한다 면 이 줄 은 listen 443 ssl 을 취소 해 야 합 니 다. server name www. buagengen. com; \ # 도 메 인 이름
    #   ssl
    #ssl on;        #    HTTPs  ,     
    ssl_certificate /ssl/server.crt;
    ssl_certificate_key /ssl/server.key;
    
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    
     #      openssl     
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;
    
     ssl_ciphers  HIGH:!aNULL:!MD5;  #       
     ssl_prefer_server_ciphers  on;   #   SSLv3 TLSv1                 
    
     #            
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
     }
    
    #         /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    

    } nginx 용 기 를 다시 시작 하면 https 를 통 해 nginx 서버 에 접근 할 수 있 습 니 다.
    저자: EVANMORE 링크:https://www.jianshu.com/p/5f9bd492f186 출처: 저작권 은 작가 의 소유 이 며, 어떠한 형식의 전재 도 작가 에 게 연락 하여 권한 을 수 여 받 고 출처 를 밝 혀 주 십시오.

    좋은 웹페이지 즐겨찾기