docker 의 nginx 설정 https

이전 'docker nginx 는 하나의 호스트 에 여러 개의 사 이 트 를 배치 합 니 다' 는 여러 사이트 의 배 치 를 실 현 했 습 니 다. 현재 일부 사이트 가 https 를 통 해 접근 할 수 있 기 를 바 랍 니 다.
1. 이전에 nginx 용 기 를 만 들 때 80 포트 만 비 추 었 는데 이번 에는 이전의 nginx 용 기 를 직접 멈 추 었 습 니 다. (물론 실행 중인 Docker 용기 에 포트 맵 을 추가 할 수도 있 습 니 다) 저 는 용 기 를 다시 만 들 었 습 니 다.
docker run -d --name myNginxhttps -p 80:80 -p 443:443 -v /var/www/html:/usr/share/nginx/html -v /home/ubuntu/share/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ubuntu/share/nginx/nginx/conf.d:/etc/nginx/conf.d nginx:alpine

2. 텐 센트 클 라 우 드 에서 도 메 인 이름 의 ssl 인증 서 를 다운로드 하고 nginx 에서 사용 할 ssl 인증 서 를 선택 하 십시오.(다음은 텐 센트 클 라 우 드 에서 발췌 한 내용)
Nginx 인증서 배포:
인증서 가 져 오기
Nginx 폴 더 에서 SSL 인증서 파일 획득 1www.domain.com_bundle. crt 와 비밀 키 파일 2www.domain.com.key。 1_www.domain.com_bundle. crt 파일 은 두 개의 인증서 코드 를 포함 합 니 다.www. domain. com. key 파일 에는 비밀 키 코드 인 '- - BEGIN RSA PRIVATE KEY - - -' 와 '- - - END RSA PRIVATE KEY - - -' 가 포함 되 어 있다.
인증서 설치
도 메 인 이름 www. domain. com 의 인증서 파일 1www.domain.com_bundle. crt, 비밀 키 파일 2www. domain. com. key 는 같은 디 렉 터 리 에 저 장 됩 니 다. 예 를 들 어 / usr / local / nginx / conf 디 렉 터 리 에 저 장 됩 니 다.Nginx 루트 디 렉 터 리 아래 conf / nginx. conf 파일 을 수정 합 니 다. 내용 은 다음 과 같 습 니 다.
server {
        listen 443;
        server_name www.domain.com; #         
        ssl on;
        ssl_certificate 1_www.domain.com_bundle.crt;
        ssl_certificate_key 2_www.domain.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 / {
            root   html; #    
            index  index.html index.htm;
        }
    }

다음은 제 설정 입 니 다. 저 는 두 개의 설정 파일 을 나 누 었 습 니 다. 하 나 는 listen 80 이 고 다른 하 나 는 443 입 니 다.
server {
         listen 80;
         server_name www.xxxxxx.com;

         return   301 https://$server_name$request_uri;

         location / {
                      root /usr/share/nginx/html/xxxxxx.com;
                      index index.html index.php;
         }

         location ~ \.php$ {
                     fastcgi_pass 172.17.0.2:9000;
                     fastcgi_index index.php;
                     fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/xxxxxx.com$fastcgi_script_name;
                     fastcgi_param SCRIPT_NAME $fastcgi_script_name;
                     include fastcgi_params;
         }

}
server {
        listen 80;

        listen 443;
        server_name www.xxxxxx.com;
        ssl on;
        ssl_certificate /etc/nginx/conf.d/cert/Nginx/1_xxxxxx.com_bundle.crt;
        ssl_certificate_key /etc/nginx/conf.d/cert/Nginx/2_xxxxxx.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;

        access_log /etc/nginx/conf.d/cert/xxxxxx_ssl.log main;
        error_log /etc/nginx/conf.d/cert/xxxxxx_error_ssl.log;

        location / {
            root /usr/share/nginx/html/xxxxxx.com;
            index index.html index.php;

            if (-f $request_filename/index.html){
               rewrite (.*) $1/index.html break;
            }
            if (-f $request_filename/index.php){
               rewrite (.*) $1/index.php;
            }
            if (!-f $request_filename){
               rewrite (.*) /index.php;
            }
        }

        location ~ \.php$ {
            fastcgi_pass 172.17.0.2:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/xxxxxx.com$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            include fastcgi_params;
        }
    }

나중에 제 가 워드 프레스 백 엔 드 를 방 문 했 을 때 첫 페이지 에 접근 할 수 있 지만 백 엔 드 에 접근 할 수 없다 는 것 을 발 견 했 습 니 다. 나중에 'Nginx 가 워드 프레스 위 정적 설정' 이라는 문 제 를 찾 아 보 았 기 때문에 다음 코드 를 추 가 했 습 니 다.
if (-f $request_filename/index.html){
                    rewrite (.*) $1/index.html break;
            }
    if (-f $request_filename/index.php){
                    rewrite (.*) $1/index.php;
            }
    if (!-f $request_filename){
                    rewrite (.*) /index.php;
            }

마지막 으로 nginx 다시 시작 하기

좋은 웹페이지 즐겨찾기