docker nginx 설치 및 SSL 설정

7023 단어 Nginxlinuxdocker
본 고 는 SSL 인증서 가 필요 없 는 경우 와 SSL 을 사용 해 야 하 는 경우 등 도 메 인 이름 이 있 는 경우 docker 로 nginx 를 설정 하 는 데 사 용 됩 니 다.
준비 하 다.
1. docker 환경 이 설치 되 어 있 습 니 다. 2. 도 메 인 이름 3. SSL 인증서 신청 (선택 가능)
Nginx 설치
docker pull nginx

설정 진행
디 렉 터 리 를 만 드 는 것 은 nginx 프로필, 인증서 파일 을 저장 하 는 데 사 용 됩 니 다.
mkdir /nginx/conf.d -p
touch /nginx/conf.d/nginx.conf
mkdir /nginx/cert -p

그리고 nginx. conf 편집
nano /nginx/conf.d/nginx.conf

SSL 이 필요 없 는 경우
server {
    listen 80;  #   80  
    server_name example.com www.example.com;  #      
    
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:8090;  #        :  
    }
}

설정 이 완료 되면 example. com, www. example. com 에 방문 하 라 는 요청 이 서버 8090 포트 로 전 송 됩 니 다.
SSL 이 필요 한 경우
http 에 접근 할 필요 가 없 을 때 https 로 강제로 재 설정 할 수 있 습 니 다. 아래 설정 을 사용 할 수 있 습 니 다.
#       https
server {
    listen 80; #  80  ,             HTTPs ,       
    listen 443 ssl; #  443  ,  SSL
    server_name example.cn www.example.cn;  #      
    #       ,  /etc/nginx/      
    ssl_certificate 1_example_bundle.crt;
    ssl_certificate_key 2_example.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;

    client_max_body_size 1024m;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    #               ,     ,   127.0.0.1...
        proxy_pass http://xxx.xx.xx.xx:8090;
    }
}

http 에 접근 할 때 https 로 강제로 바 꾸 려 면 아래 설정 을 사용 할 수 있 습 니 다.
#      
server {
    listen 443 ssl;
    server_name example.cn www.example.cn;  #      
    #       ,  /etc/nginx/      
    ssl_certificate 1_example_bundle.crt;
    ssl_certificate_key 2_example.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;

    client_max_body_size 1024m;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #               ,     ,   127.0.0.1...
        proxy_pass http://xxx.xx.xx.xx:8090;
    }
}
server {
     listen 80; #   80  
     server_name example.cn www.example.cn;  #        
     # http       https
     return 301 https://$host$request_uri; 
}

Nginx 시작
docker run -itd --name nginx -p 80:80 -p 443:443-v /nginx/conf.d/nginx.conf:/etc/nginx/conf.d/nginx.conf -v /nginx/cert:/etc/nginx -m 100m nginx

매개 변수 설명
-itd        
-p          80 443
-v               docker 
             /nginx/conf.d/nginx.conf -> /etc/nginx/conf.d/nginx.conf
             /nginx/cert -> /etc/nginx
-m              
--name       nginx

좋은 웹페이지 즐겨찾기