docker nginx 설치 및 https 접근 설정
#docker search nginx
2. 창고 nginx 미 러 를 끌 어 옵 니 다. 버 전 번 호 를 추가 하지 않 고 기본 으로 최신 버 전 을 끌 어 옵 니 다.
#docker pull nginx
3. nginx 용기 시작
# 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
상기 명령 을 실행 한 후 오류 가 발생 할 수 있 습 니 다: Are you trying to mount a directory onto a file (or vice - versa)?Check if the specified host path exists and is the expected type. 홈 호스트 가 nginx 설정 파일 이 용기 nginx 와 일치 하지 않 으 면 마 운 트 할 수 없 기 때문에 상기 명령 의 / home / evan / workspace / wxserver / nginx / config / nginx. conf, / home / evan / workspace / wxserver / nginx / config / conf. d / default. conf 의 nginx. conf, default. conf 는 이 경로 에서 폴 더 가 용기 내부 파일 과 매 핑 될 수 없습니다.
해결: 홈 호스트 에 / home / evan / workspace / wxserver / nginx / config / nginx. conf 폴 더 를 삭제 하고 해당 하 는 nginx. conf 파일 을 만 듭 니 다. 홈 호스트 / home / evan / workspace / wxserver / nginx / config / conf. d / 에서 default. conf 폴 더 를 삭제 하고 default. conf 파일 을 만 듭 니 다. 시작 한 용기 가 시작 되 지 않 았 습 니 다. 시작 되 지 않 은 nginx 용 기 를 먼저 삭제 할 수 있 습 니 다.
1). 모든 용기 조회 \ # docker ps - a
2) 방금 시작 하지 못 한 nginx 용 기 를 삭제 합 니 다 \ # docker rm nginx 용기 ID
3) 재 집행
# 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
4. 서류 준비
# 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/mime.types;
default_type application/octet-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;
}
2) 위 / home / evan / workspace / wxserver / nginx / config / conf. d / 에 자신 이 만 든 default. conf 를 끼 워 기본 설정 을 추가 합 니 다.
server {
listen 80; # 80 , HTTPs ,
server_name www.buagengen.com; #
charset utf-8;
#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;
}
}
3) / home / evan / work space / wxserver / nginx / data: / usr / share / nginx / html / 폴 더 에 index. html 파일 을 마음대로 만 들 수 있 습 니 다.
이 럴 때 IP 주 소 를 통 해 nginx 가 정의 하 는 html 파일 에 직접 접근 할 수 있 습 니 다.그러나 이때 의 방문 은 http 에 불과 합 니 다. https 의 방문 은 안 됩 니 다. nginx 서버 에 인증 서 를 추가 해 야 합 니 다.
----------------------------------------------------------------------------------------------------------
5. openssl 을 통 해 인증서 설정 https 생 성
위 경로 / home / evan / workspace / wxserver / nginx / ssl / 에 들 어 갑 니 다. 폴 더 아래 에서 다음 작업 을 수행 합 니 다:
1) server. key 를 설정 합 니 다. 비밀 번 호 를 두 번 설정 해 야 합 니 다.
#openssl genrsa -des3 -out server.key 1024
2) 매개 변수 설정, 우선 여 기 는 이전에 설정 한 비밀 번 호 를 입력 한 다음 에 다음 과 같은 정 보 를 입력 해 야 합 니 다. 대충 작성 하면 됩 니 다. 어차피 테스트 용 입 니 다.
#openssl req -new -key server.key -out server.csr
3) RSA 비밀 키 쓰기 (이전에 설정 한 비밀 번 호 를 입력 해 야 합 니 다):
#openssl rsa -in server.key -out server_nopwd.key
4) 비밀 키 가 져 오기:
#openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
이 단 계 를 완성 한 후에 우리 가 필요 로 하 는 인증서 파일 과 비밀 키 를 얻 었 습 니 다.
6. 설정 nginx 추가 ssl 설정
1) 수정 / home / evan / workspace / wxserver / nginx / config / conf. d / 폴 더 의 설정 파일 default. conf
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_nopwd.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: / / 를 통 해 ip 에서 nginx 서버 에 접근 하 러 왔 습 니 다.
비고: EM 가 나타 나 면do_header: bad password read error: 140 B0009: SSL 오류 입 니 다.
nginx
시작 할 때 인증서 비밀 번 호 를 입력 해 야 하기 때 문 입 니 다. 해결 방법 은 비밀 키 를 사용 하여 복호화 후 key
를 생 성 할 수 있 습 니 다. 효 과 는 같 습 니 다 ssh
와 연결 차이 가 많 지 않 습 니 다. 암호 재 부팅 면제 효 과 를 얻 을 수 있 습 니 다. 상기 설정 에서server_nopwd. key 는 복호화 키 입 니 다. server. key 는 암호 화 된 키 입 니 다. 방금 제 가 설정 한 것 은 복호화 키 입 니 다.
부록: nginx 의 부하 균형 설정:
인증 서 는 자체 서명 발급 에 속 하기 때문에 브 라 우 저 에서 인증 하지 않 으 면 안전 하지 않 은 링크 알림 이 나타 날 수 있 습 니 다. 따라서 정식 온라인 에 서 는 정규 인증 서 를 신청 해 야 합 니 다. 현재 상황 에서 브 라 우 저 를 설정 하여 이 알림 을 무시 한 다음 에 브 라 우 저 는 요청 할 때 예 검 메커니즘 에 OPTIONS 요청 을 보 내 서 성공 적 이 고 안전 한 지 판단 합 니 다. nginx 에 대응 하 는 설정 은 다음 과 같 습 니 다.
upstream hsdfas { #least_conn; #least conn 은 연결 수가 가장 적은 server 에 할당 을 요청 합 니 다. ip hash 는 ip 에 접근 하 는 hash 값 에 따라 분 배 됩 니 다. 그러면 같은 클 라 이언 트 의 연속 적 인 웹 요청 은 같은 server 에 배 포 됩 니 다. #server 192.168.1.79: 8092 weight = 1 max fails = 3; \ # down 은 싱글 전의 server 가 부하 에 잠시 참여 하지 않 거나 backup 기기 다운 이 아 닌 바 쁠 때 backup 기 계 를 요청 합 니 다} server{ listen 80; #80 포트 를 검색 합 니 다. 모든 접근 을 강제로 HTTPs 로 해 야 한다 면 이 줄 을 취소 해 야 합 니 다. listen 443 ssl; server_name 192.168.1.79; #열다 ssl on; 이 줄 을 지우 면 ssl 은 443 포트 뒤에 적 습 니 다. http 와 https 의 링크 를 모두 사용 할 수 있 습 니 다. #ssl on; #HTTPs 접근 을 강제 하면 이 줄 을 열 어야 합 니 다. ssl_certificate /ssl/hsdfas.crt; ssl_certificate_key /ssl/hsdfas_unsecure.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; # SSLv 3 와 TLSv 1 프로 토 콜 에 의존 하 는 서버 암 호 는 클 라 이언 트 암호 보다 우선 합 니 다. location / { proxy_pass http://hsdfas; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_ignore_client_abort on;
// 브 라 우 저의 사전 검사 메커니즘 을 제거 합 니 다. if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Headers Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD,PUT; add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Headers X-Data-Type,X-Auth-Token; return 204; } client_max_body_size 16m; client_body_buffer_size 512k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 512k; proxy_buffers 16 512k; proxy_busy_buffers_size 1024k; proxy_temp_file_write_size 1024k; add_header Access-Control-Allow-Origin *; index index.jsp index.html index.htm; } #오류 페이지 를 / 50x. html 로 다시 지정 합 니 다. error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LVM에서 논리 볼륨 크기 확장 시도며칠 전 저희 부서에서 관리하던 데이터베이스 서버의 용량이 100%에 이르러 세상을 떠났기 때문에 저는 새로운 디스크를 추가하여 LVM으로 논리 볼륨의 크기를 확장하고 회복했습니다. 하지만 이 일은 모르는 단어와 지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.