Docker 의 Nginx 서버 관련 설정

6785 단어
작업 중 에는 서버 에서 실험 을 해 보고 효과 가 이론 적 으로 묘사 한 것 과 같 는 지 직접 확인 해 야 한다.docker 로 필요 한 환경 을 편리 하 게 설정 할 수 있 습 니 다. 다음 내용 은 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 각 메시지 의 명령 의 미 는 다음 과 같 습 니 다.
  • Public 지시 응답 은 모든 캐 시 영역 에 캐 시 될 수 있 습 니 다.
  • Private 지 시 는 한 사용자 의 전체 또는 일부 응답 메시지 에 대해 공유 캐 시 처 리 를 할 수 없습니다.이것 은 서버 가 사용자 의 일부 응답 메시지 만 설명 할 수 있 도록 합 니 다. 이 응답 메 시 지 는 다른 사용자 의 요청 에 유효 하지 않 습 니 다.
  • no - cache 는 브 라 우 저, 캐 시 서버 에 로 컬 복사 본 이 만 료 되 었 든 안 되 었 든 자원 복사 본 을 사용 하기 전에 원본 서버 에 가서 복사 본 유효성 검 사 를 해 야 한다 고 알려 줍 니 다.
  • no - store 요청 과 응답 메 시 지 는 캐 시 를 사용 하지 않 습 니 다.
  • max - age 지시 클 라 이언 트 는 생존 기간 이 지 정 된 시간 (초 단위) 보다 크 지 않 은 응답 을 받 을 수 있 습 니 다.
  • must - revaidate 는 브 라 우 저, 캐 시 서버 에 로 컬 복사 본 이 만 료 되 기 전에 로 컬 복사 본 을 사용 할 수 있 음 을 알려 줍 니 다.로 컬 복사 본 이 만 료 되면 원본 서버 에 가서 유효성 검 사 를 해 야 합 니 다
  • Nginx 설정 SSL 및 Http Https 로 이동
    다음은 자체 서명 인증 서 를 만 드 는 절 차 를 간소화 하 는 것 입 니 다. openssl 을 설치 하고 다음 절 차 를 사용 해 야 합 니 다.
  • 키 만 들 기;
  • 서명 요청 만 들 기;
  • Key 의 암 호 를 제거 합 니 다.
  • 키 로 인증서 에 서명 합 니 다.

  • 비밀 키 생 성
    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
    참고 문서
  • Nginx 용기 튜 토리 얼
  • Nginx 에 서명 한 SSL 인증서 설정
  • 좋은 웹페이지 즐겨찾기