Docker 의 Nginx 서버 관련 설정
다운로드 nginx
기본 중앙 창고 에서 nginx
docker pull nginx
를 다운로드 하여 nginx images 를 시작 하고 배경 으로 들 어 갑 니 다 docker run -it nginx /bin/bash
. Liux 발행 판 을 통 해 어떤 가방 관리 도구 cat /proc/version
를 사용 하 는 지 알 수 있 습 니 다.Linux version 4.14.92-boot2docker (root@2c85d808f0f3(gcc version 6.3.0 20170516 (Debian 6.3.0 - 18 + deb9u 1) \ # 1 SMP Wed 1 월 9 일 22: 03: 23 UTC 2019 에 서 는 기본적으로 데 비 안 을 사용 하 는 것 을 볼 수 있 으 므 로 패키지 관리 도 구 는 apt - get 을 사용 합 니 다.
상용 도구 vim curl 등
apt-get install vim
을 설치 하지 못 하면 명령 알림 은 다음 과 같 습 니 다.Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
이 때 두 드 려 야 합 니 다:
apt-get update
이 명령 의 역할 은 동기 화 / etc / apt / sources. list 와 / etc / apt / sources. list. d 에 열 거 된 원본 색인 입 니 다. 그래 야 최신 패 키 지 를 얻 을 수 있 습 니 다.업데이트 가 끝 난 후에 apt - get install vim 명령 을 다시 실행 하면 됩 니 다.ll 별명 vi ~ /. bashrc 설정 아래 alias ll = 'ls $LSOPTIONS -l'
docker 포트 맵 은 이 컴퓨터 의 접근 을 편리 하 게 합 니 다.
docker run - p 8080: 80 - it nginx / bin / bash 는 홈 호스트 에서 localhost: 8080 을 방문 하면 nginx 환영 페이지 를 볼 수 있 습 니 다. window 에서 홈 호스트 는 192.168.99.100 이 므 로 방문 주 소 는?http://192.168.99.100:8080
이유: docker 는 Linux 에서 실 행 됩 니 다. Windows 에서 docker 를 실행 합 니 다. 실제로 Windows 에서 먼저 Linux 환경 을 설치 한 다음 에 이 시스템 에서 실 행 된 docker 입 니 다.즉, 서비스 에서 사용 하 는 localhost 는 이 Linux 환경의 주 소 를 가리 키 며, 우리 의 숙주 환경 인 윈도 우즈 가 아니다.이 리 눅 스 의 ip 주 소 를 찾 습 니 다. 일반적인 상황 에서 이 주 소 는 192.168.9.9.100 (docker - machine ip default 명령 찾기) 입 니 다.
nginx 관련 설정
nginx 의 압축 출력 설정
# gzip
gzip on;
# gzip
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
# gzip
gzip_comp_level 2;
# 。
gzip_types text/plain application/x-javascript application/css text/css application/xml text/javascript application/x-httpd-php
gzip_vary on;
Nginx 정적 자원 크로스 도 메 인 접근 설정
location / {
add_header Access-Control-Allow-Origin http://php.jesse.com; //
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS; //
root /var/www/php;
index index.html index.htm;
}
Nginx 정적 자원 도 난 방지 체인 설정
location ~ .*\.(jpg|gif|png)$ {
valid_referers none blocked php.jesse.com;
if ($invalid_referer) {
return 403;
}
}
Nginx 정적 자원 캐 시 설정
location ~ .*\.(php|htm|html)$ {
add_header Cache-Control no-cache;
add_header Pragma no-cache;
}
location ~ .*\.(css|js|swf)$ {
add_header Cache-Control max-age=600;
}
location ~ .*\.(jpg|gif|png)$ {
expires 3d;
}
Cache - Control 은 Expires 의 역할 과 일치 합 니 다. 현재 자원 의 유효기간 을 가리 키 며 브 라 우 저가 브 라 우 저 캐 시 에서 데 이 터 를 직접 가 져 올 지, 아니면 서버 로 데 이 터 를 다시 보 낼 지 제어 합 니 다.다만 Cache - Control 의 선택 이 더 많 고 설정 이 더 세밀 하 며 동시에 설정 하면 Expires 보다 우선 순위 가 높 습 니 다.
http 프로 토 콜 헤더 Cache - Control 값 은 Public, private, no - cache, no - store, no - transform, must - revalidate, proxy - revidate, max - age 각 메시지 의 명령 의 미 는 다음 과 같 습 니 다.
다음은 자체 서명 인증 서 를 만 드 는 절 차 를 간소화 하 는 것 입 니 다. openssl 을 설치 하고 다음 절 차 를 사용 해 야 합 니 다.
비밀 키 생 성
openssl 도 구 를 사용 하여 RSA 비밀 키
openssl genrsa -des3 -out server.key 1024
매개 변 수 를 생 성 합 니 다. rsa 비밀 키, des3 알고리즘, 1024 비트 강도, server. key 는 비밀 키 파일 이름 입 니 다.CSR 생 성 (인증서 서명 요청)
openssl req -new -key server.key -out server.csr
인증서 서명 요청 파일 을 생 성 한 후 인증서 서명 을 할 수 있 습 니 다. 이 럴 때 두 가지 선택 이 있 습 니 다.첫 번 째 는 이 CSR 파일 을 권위 있 는 CA 기구 에 보 내 고 그들 이 검증 하고 정식 서명 하 는 것 입 니 다. 이런 방식 으로 서명 한 인증 서 는 권위 있 는 기구 에서 검증 되 고 유효성 을 가 집 니 다. 효 과 는 모든 클 라 이언 트 의 브 라 우 저 에서 인증 서 를 인정 할 수 있 지만 이런 방식 은 유 료 입 니 다.두 번 째, 자체 CA, 자체 서명 증 서 는 자신 이 자신 에 게 증명 서 를 서명 한 다 는 뜻 이다. 이런 방식 의 서명 증 서 는 권위 적 인 검증 을 받 지 못 하고 공 인 된 유효성 을 갖 추 지 못 하기 때문에 클 라 이언 트 가 방문 하면 인증서 가 무효 하거나 안전 하지 않다 는 것 을 나타 낸다. 이런 방식 은 무료 이 고 일반 내부 테스트 나 사용 하면이런 식 으로 하면 돼.
비밀 키 의 암 호 를 삭제 합 니 다.
첫 번 째 단계 에서 비밀 키 를 만 드 는 과정 에서 비밀 번 호 를 지정 해 야 하기 때 문 입 니 다.이 비밀 번 호 는 부작용 을 가 져 옵 니 다. 그것 은 nginx 가 시 작 될 때마다 비밀 번 호 를 입력 하 라 고 요구 하 는 것 입 니 다. 이것 은 매우 불편 합 니 다.비밀 키 의 비밀 번 호 를 삭제 하려 면 다음 과 같이 조작 하 십시오.
openssl rsa -in server.key.org -out server.key
자체 서명 인증서 생 성openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
원 80 포트 301 턴 점프.
server {
listen 80;
server_name php.jesse.com;
return 301 https://php.jesse.com$request_uri; # Https
}
사용자 습관 상 웹 사 이 트 를 방문 하려 고 할 때 브 라 우 저 에 도 메 인 이름 만 입력 합 니 다. 도 메 인 이름 앞 에 http: / 또는 https: / 를 추가 하지 않 고 브 라 우 저 에서 자동 으로 채 웁 니 다. 현재 모든 브 라 우 저 는 기본적으로 http: / / 를 채 웁 니 다.일반적으로 사이트 관리 자 는 301 / 302 점프 방식 으로 HTTP 에서 HTTPS 로 전환 하지만 이 과정 은 항상 HTTP 에 사용 되 기 때문에 납치 가 발생 하기 쉬 워 제3자 의 공격 을 받는다.이 럴 때 는 HSTS (HTTP 엄격 한 보안 전송) 를 사용 해 야 합 니 다.
ssl 기능 오픈
server {
listen 443;
server_name php.jesse.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; # hsts
root /var/www/php;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
}
mynginx 미 러 만 들 기
이상 저 희 는 nginx 미 러 가 생 성 된 용기 에서 많은 작업 을 했 고 다음 과 같은 필요 한 플러그 인 도 설치 하 였 습 니 다.다음 에 사용 할 때 우 리 는 원래 의 기초 위 에서 조작 하 기 를 희망 한다. 우 리 는 이전의 용 기 를 직접 사용 할 수 있 고, 이전의 용 기 를 거울 로 만 들 수도 있다.
docker commit -a "username" -m "this is mynginx" mynginx
참고 문서
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.