docker 용기 배치 nginx 사용 하기

8087 단어 Nginx
1. nginx 관련 경로
설정 디 렉 터 리: / etc / nginx 정적 페이지 디 렉 터 리: / usr / share / nginx / html
2. 용기 화 실행 nginx, HTTP 서비스 구축
Nginx 의 가장 큰 역할 은 웹 서버 를 구축 하 는 것 이다.용기 가 있 으 면 명령 한 줄 만 있 으 면 서버 가 설치 되 어 전혀 설정 할 필요 가 없습니다.
docker run -d \
-p 8080:80 \
--name mynginx \
nginx

배치 가 성공 하면 IP: 8080 을 방문 하면 nginx 의 묵묵히 환영 페이지 를 볼 수 있 습 니 다.
3. 웹 디 렉 터 리 맵
웹 페이지 파일 이 모두 용기 안에 있어 서 직접 수정 할 수 없어 서 분명히 매우 불편 하 다.다음 단 계 는 웹 파일 이 있 는 디 렉 터 리 / usr / share / nginx / html 를 로 컬 에 비 추 는 것 입 니 다.디 렉 터 리 를 새로 만 들 고 이 디 렉 터 리 에 들 어 갑 니 다.
mkdir html

cd html

이 하위 디 렉 터 리 에 index. html 파일 을 설치 합 니 다.
vim index.html

<h1>Hello World</h1>

이 하위 디 렉 터 리 html 를 용기 의 웹 파일 디 렉 터 리 / usr / share / nginx / html 에 표시 합 니 다.브 라 우 저 를 열 고 IP: 8080 을 방문 하면 Hello World 를 볼 수 있 을 것 입 니 다.
docker run -d \
-p 8080:80 \
-v $pwd/html:/usr/share/nginx/html \
--name mynginx \
nginx

4. 설정 디 렉 터 리 복사
용기 안의 Nginx 프로필 을 로 컬 로 복사 합 니 다.
docker cp mynginx:/etc/nginx .

위 명령 의 의 미 는 my nginx 용기 의 / etc / nginx 를 현재 디 렉 터 리 로 복사 하 는 것 입 니 다.마지막 그 점 을 빠 뜨리 지 마라.실행 이 완료 되면 현재 디 렉 터 리 에 nginx 하위 디 렉 터 리 가 하나 더 나 와 야 합 니 다.그리고 이 하위 디 렉 터 리 를 conf 로 바 꿉 니 다.
mv nginx conf

이제 mynginx 용 기 를 종료 할 수 있 습 니 다.
docker stop mynginx

5. 맵 설정 디 렉 터 리
새 용 기 를 다시 시작 합 니 다. 이번 에는 웹 디 렉 터 리 뿐만 아니 라 설정 디 렉 터 리 도 매 핑 합 니 다.
docker run -d \
-v "$PWD/html":/usr/share/nginx/html \
-v "$PWD/conf":/etc/nginx \
-p 8080:80 \
--name mynginx \
nginx

주의: "$ PWD / html", "$ PWD / conf" 에 작은 따옴표 가 붙 어야 합 니 다. $PWD 는 대문자 로 써 야 지 소문 자로 써 서 는 안 된다.-v "$pwd/conf":/etc/nginx 숙 성 호스트 의 conf 하위 디 렉 터 리 를 용기 의 설정 디 렉 터 리 /etc/nginx 에 표시 합 니 다.브 라 우 저 는 IP: 8090 에 접근 합 니 다. 웹 페이지 를 볼 수 있다 면 로 컬 설정 이 유효 합 니 다.이때 이 용 기 를 중지 할 수 있다.
docker stop mynginx

6. 자가 서명 인증서
이제 용기 에 HTTPS 지원 을 추가 하려 면 첫 번 째 는 비밀 키 와 인증 서 를 만 드 는 것 입 니 다.정식 인증 서 는 인증서 당국 (CA) 의 서명 이 필요 합 니 다. 테스트 를 위해 자체 서명 (self - signed) 인증 서 를 만 들 면 됩 니 다.우선, 기계 에 OpenSSL 이 설치 되 어 있 는 지 확인 하고 다음 명령 을 수행 하 세 요.
openssl req \
-x509 \
-nodes \
-days 365 \
-newkey rsa:2048 \
-keyout example.key \
-out example.crt

위 명령 의 매개 변 수 는 다음 과 같 습 니 다.
  • req, 인증서 서명 요청 처리.
  • - x509, 자체 서명 인증 서 를 생 성 합 니 다.
  • - nodes, 인증서 에 암 호 를 설정 하 는 단 계 를 건 너 뛰 어야 Nginx 가 인증 서 를 직접 열 수 있 습 니 다.
  • - days 365, 인증서 유효기간 은 1 년 입 니 다.
  • - newkey rsa: 2048, 새로운 비밀 키 를 생 성 합 니 다. 사용 하 는 알고리즘 은 2048 비트 의 RSA 입 니 다.
  • - 키 아웃, 새로 생 성 된 비밀 키 파일 은 현재 디 렉 터 리 의 example. key 입 니 다.
  • - out, 새로 생 성 된 인증서 파일 은 현재 디 렉 터 리 의 example. crt 입 니 다.

  • 실행 후 명령 길드 에서 당신 이 어느 나라 에 있 는 지, 당신 의 이메일 등 많은 질문 을 던 져 서 대답 하 라 고 합 니 다.가장 중요 한 문 제 는 Common Name 입 니 다. 정상 적 인 상황 에서 도 메 인 이름 을 입력 해 야 합 니 다. 여기 서 IP 를 입력 할 수 있 습 니 다.질문 에 대답 하면 현재 디 렉 터 리 에 두 개의 파일 이 더 나 올 것 입 니 다. example. key 와 example. crt.conf 디 렉 터 리 에 하위 디 렉 터 리 certs 를 새로 만 들 고 이 두 파일 을 하위 디 렉 터 리 에 넣 습 니 다.
    mkdir -p conf/certs
    
    mv example.crt example.key conf/certs
    

    7. HTTPS 설정
    비밀 키 와 인증서 가 있 으 면 Nginx 의 HTTPS 를 열 수 있 습 니 다.우선 conf / conf. d / default. conf 파일 열기
    server {
        listen       80;
        server_name  localhost;
    
        #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;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    

    위의 server 모듈 {} 에 아래 설정 을 추가 합 니 다.
    server {
        # http   
        ...
        
        # https   
        listen 443 ssl http2;
        server_name  localhost;
    
        ssl_certificate          /etc/nginx/certs/example.crt;
        ssl_certificate_key      /etc/nginx/certs/example.key;
    
        ssl_session_timeout  5m;
    
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers   on;
    }
    

    그리고 새로운 Nginx 용 기 를 시작 합 니 다.
    cd /path/to/nginx
    
    docker run -d \
    -v "$PWD/html":/usr/share/nginx/html \
    -v "$PWD/conf":/etc/nginx \
    -p 8080:80 \
    -p 8443:443 \
    --name mynginx \
    nginx
    

    위의 명령 에는 용기 의 80 포트 뿐만 아니 라 443 포트 도 매 핑 되 어 있 으 며 이것 은 HTTPS 전용 포트 입 니 다.브 라 우 저 를 열 고 접근 https://IP:8443/.자체 서명 인증 서 를 사 용 했 기 때문에 브 라 우 저 는 안전 하지 않다 고 알려 줍 니 다.신경 쓰 지 말고 계속 방문 하면 Hello World 를 볼 수 있 을 거 예요.

    좋은 웹페이지 즐겨찾기