nginx proxy - cache 사용
8018 단어 nginxproxy-cache
Nginx 의 코드 는 하나의 핵심 과 일련의 모듈 로 구성 되 는데 핵심 은 주로 웹 서버 의 기본 기능 과 웹 과 Mail 의 역방향 프 록 시 기능 을 제공 하 는 데 사용 된다.또한 네트워크 프로 토 콜 을 사용 하여 필요 한 실행 환경 을 만 들 고 서로 다른 모듈 간 의 부 드 러 운 상호작용 을 확보 하 는 데 도 사용 된다.그러나 대부분 협의 와 관련 된 기능 과 특정한 응용 특유 의 기능 은 nginx 모듈 에 의 해 이 루어 진다.이러한 기능 모듈 은 크게 이벤트 모듈, 단계 적 프로세서, 출력 필터, 변수 프로세서, 프로 토 콜, upstream 과 부하 균형 몇 가지 유형 으로 나 눌 수 있 으 며, 이러한 것들 은 nginx 의 http 기능 을 공동으로 구성 합 니 다.이벤트 모듈 은 주로 kqueue 나 epoll 등 OS 독립 된 (운영 체제 에 따라 이벤트 메커니즘 이 다 름) 이벤트 알림 체 제 를 제공 하 는 데 사 용 됩 니 다.프로 토 콜 모듈 은 nginx 가 http, tles / ssl, smtp, pop 3 및 imap 와 대응 하 는 클 라 이언 트 를 통 해 세 션 을 만 드 는 것 을 책임 집 니 다.
Nginx 의 핵심 모듈 은 Main 과 Events 이 며 표준 HTTP 모듈, 선택 가능 한 HTTP 모듈 과 메 일 모듈 도 포함 되 어 있 으 며 여러 제3자 모듈 도 지원 할 수 있다.Main 은 오류 로그, 프로 세 스 및 권한 등 관련 인 자 를 설정 하 는 데 사 용 됩 니 다. Events 는 epoll, kqueue, select 또는 poll 등 IO 모델 을 설정 하 는 데 사 용 됩 니 다. 필수 모듈 입 니 다.
1. nginx 역방향 프 록 시 설정 설치:
시스템 환경: Centos 6.4 x8664
소프트웨어 버 전: nginx - 1.5.2
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -r -g nginx nginx
[root@localhost ~]# tar zxvf nginx-1.5.2.tar.gz
[root@localhost ~]# cd nginx-1.5.2
[root@localhost nginx-1.5.2]# mkdir /var/tmp/ngnix/client -p
[root@localhost nginx-1.5.2]# ./configure \
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/sbin/nginx \
> --conf-path=/etc/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --pid-path=/var/run/nginx/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_flv_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --http-client-body-temp-path=/var/tmp/nginx/client/ \
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
> --http-scgi-temp-path=/var/tmp/nginx/scgi \
> --with-pcre
[root@localhost nginx-1.5.2]# make; make install
2. nginx 서비스 시작:
[root@localhost ~]# nginx
[root@localhost ~]# ps aux | grep nginx
root 13089 0.0 0.0 55152 1776 ? Ss 10:52 0:00 nginx: master process nginx
nginx 13194 0.0 0.0 55552 2144 ? S 11:20 0:00 nginx: worker process
nginx 13195 0.0 0.0 55348 1544 ? S 11:20 0:00 nginx: cache manager process
root 13238 0.0 0.0 103248 824 pts/0 S+ 11:31 0:00 grep nginx
3. 편집 / etc / nginx / nginx. conf
http 필드 에 추가:
upstream static {
server 192.168.30.116 weight=1;
}
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m inactive=24h max_size=1g;
upstream 모듈
proxy 모듈 과 결합 하여 사용 하 는 모듈 중 가장 많이 사용 되 는 것 은 upstream 모듈 입 니 다.upstream 모듈 은 새로운 컨 텍스트 를 정의 할 수 있 습 니 다. 보물 섬 upstream 서버 를 포함 하고 있 습 니 다. 이 서버 들 은 서로 다른 가중치, 유형, 심지어 유지 보수 등 을 바탕 으로 down 으로 표 시 될 수 있 습 니 다.
upstream 모듈 에서 자주 사용 하 는 명령 은:
ip_hash: 클 라 이언 트 IP 주 소 를 기반 으로 요청 한 배포 가 완료 되 었 습 니 다. 같은 클 라 이언 트 에서 온 요청 이 항상 같은 upstream 서버 로 전 송 될 수 있 습 니 다.
keepalive: 모든 worker 프로 세 스 가 upstream 서버 에 보 내 는 연결 캐 시 갯 수 입 니 다.
least_conn: 최소 연결 스케줄 링 알고리즘;
server: upstream 서버 의 주 소 를 정의 합 니 다. 다음 과 같은 일련의 선택 가능 한 매개 변 수 를 포함 할 수 있 습 니 다.
weight: 가중치;
max_fails: 최대 실패 연결 횟수, 실패 연결 의 시간 초과 시간 은 failtimeout 지정;
fail_timeout: 요청 한 대상 서버 가 응답 을 보 내 기 를 기다 리 는 시간;
backup: fallback 의 목적 으로 모든 서비스 가 고장 났 을 때 이 서버 를 시작 합 니 다.
down: 더 이상 요청 을 처리 하지 않 음 을 수 동 으로 표시 합 니 다.
proxy_cache_path: 캐 시 응답 메 시 지 를 저장 하 는 디 렉 터 리 와 캐 시 대상 을 저장 하 는 키 와 메타 데이터 에 응답 하 는 공유 메모리 영역 (keys zone = name: size) 을 정의 합 니 다. 선택 할 수 있 는 매개 변 수 는 다음 과 같 습 니 다.
levels: 각 하위 디 렉 터 리 이름 의 길이, 유효 치 는 1 또는 2 이 며, 각 단계 간 에 콜론 으로 구분 되 어 있 으 며, 최대 3 급 입 니 다.
inactive: 비활성 캐 시 항목 은 캐 시 에서 이전의 최대 캐 시 시간 을 삭제 합 니 다.
max_size: 캐 시 공간 크기 의 상한 선 입 니 다. 캐 시가 필요 한 대상 이 이 공간 제한 을 초과 하면 캐 시 관리 자 는 LRU 알고리즘 을 기반 으로 청 소 됩 니 다.
loader_files: 캐 시 캐리어 (cache loader) 의 매번 작업 과정 은 최대 몇 개의 파일 로 메타 데 이 터 를 불 러 옵 니까?
loader_sleep: 캐 시 캐리어 의 매번 교체 작업 후의 수면 시간;
loader_threashold: 캐 시 캐리어 의 최대 수면 시간;
예 를 들 면: proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m;
proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m;
proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;
그리고 server 의 location 필드 에 추가:
location / {
proxy_pass http://static;
proxy_set_header Host $host;
proxy_cache one;
proxy_cache_valid 200 1d;
proxy_cache_valid 301 302 10m;
proxy_cache_valid any 1m;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
add_header X-Via $server_addr;
add_header X-Cache-status $upstream_cache_status;
}
nginx 를 역방향 에이전트 로 할 때 upstream 에서 온 응답 캐 시 를 로 컬 로 저장 하고 후속 클 라 이언 트 가 같은 내용 을 요청 할 때 로 컬 구조 에서 메시지 에 직접 응답 할 수 있 습 니 다.
proxy_cache zone | off: 캐 시 에 사용 할 공유 메모리 영역 을 정의 합 니 다. 여러 곳 에서 호출 할 수 있 습 니 다.캐 시 는 upstream 서버 의 응답 메시지 첫 번 째 부분 에서 캐 시 에 대한 설정 을 따 릅 니 다. 예 를 들 어 "Expires", "Cache - Control: no - cache", "Cache - Control: max - age = XXX", "private", "no - store" 등 입 니 다. 그러나 nginx 는 캐 시 할 때 메시지 에 응답 하 는 "Vary" 첫 번 째 부분 을 고려 하지 않 습 니 다.개인 정보 가 캐 시 되 지 않도록 모든 사용자 에 대한 개인 정 보 는 upstream 에서 'no - cache' or 'max - age = 0' 을 통 해 이 루어 질 수 있 고 nginx 에서 proxy 를 설정 할 수 있 습 니 다.cache_key 는 $cookie 와 같은 사용자 특유 의 데 이 터 를 포함해 야 합 니 다.xxx 방식 은 실현 되 지만 마지막 으로 이런 방식 은 공공 캐 시 에서 사용 하면 위험 할 수 있 습 니 다.따라서 응답 메시지 에 다음 과 같은 첫 번 째 또는 지정 한 표지 가 있 는 메 시 지 는 캐 시 되 지 않 습 니 다.
Set-Cookie
Cache-Control containing "no-cache", "no-store", "private", or a "max-age" with a non-numeric or 0 value
Expires with a time in the past
X-Accel-Expires: 0
proxy_cache_key: 캐 시 를 저장 하고 검색 할 때 '키' 에 사용 할 문자열 을 설정 합 니 다. 변 수 를 값 으로 사용 할 수 있 지만 사용 하지 않 으 면 같은 내용 으로 여러 번 캐 시 할 수 있 습 니 다.또한 사용자 의 개인 정 보 를 키 에 사용 하면 사용자 의 개인 정 보 를 다른 사용자 에 게 되 돌려 주 는 것 을 피 할 수 있다.
proxy_cache_lock: 이 옵션 을 사용 하면 캐 시 미 명령 에서 같은 요청 을 여러 개 막 고 upstream 으로 보 낼 수 있 습 니 다. 적용 범 위 는 worker 단계 입 니 다.
proxy_cache_lock_timeout:proxy_cache_lock 기능 의 잠 금 시간;
proxy_cache_min_uses: 어떤 응답 메시지 가 캐 시 되 기 전에 최소한 요청 해 야 할 횟수;
proxy_cache_use_stale: upstream 서버 에 연결 할 수 없 을 때 어떤 상황 에서 (예 를 들 어 error, timeout 또는 http 500 등) nginx 가 로 컬 캐 시 를 사용 하 는 만 료 된 캐 시 대상 이 클 라 이언 트 요청 에 직접 응답 하도록 합 니까?그 형식 은:
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_404 | off
proxy_cache_valid [code...] time: 서로 다른 응답 을 위해 길 지 않 은 유효한 캐 시 시간 을 설정 합 니 다. 예 를 들 어 proxycache_valid 200 302 10m;
proxy_cache_methods [GET HEAD POST]: 어떤 요청 방법 으로 캐 시 기능 을 사용 합 니까?
proxy_cache_by pass string: 어떤 상황 에서 nginx 는 캐 시 에서 데 이 터 를 찾 지 않 습 니까?예 를 들 면:
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
add_header http 응답 메시지 내용 을 사용자 정의 하 는 데 사 용 됩 니 다. 캐 시 명중 여 부 를 조회 하 는 데 사 용 됩 니 다.
4. nginx 캐 시 디 렉 터 리 를 만 들 고 nginx 를 다시 시작 합 니 다.
[root@localhost ~]# mkdir /data/nginx/cache -p
[root@localhost ~]# nginx -s reload
5. 캐 시 적중 여부 확인:
[root@localhost ~]# curl -I http://192.168.30.115/index.html
HTTP/1.1 200 OK
Server: nginx/1.5.2
Date: Mon, 24 Mar 2014 03:39:44 GMT
Content-Type: text/html
Content-Length: 7
Connection: keep-alive
Last-Modified: Mon, 24 Mar 2014 03:22:07 GMT
ETag: "532fa4df-7"
X-Via: 192.168.30.115
X-Cache-status: HIT
Accept-Ranges: bytes
[root@localhost ~]# ls /data/nginx/cache/c/33/
71c50b7fc36aaac8ea9ebc87ae37a33c
X - Cache - status 문단 HIT 를 보면 백 엔 드 호스트 192.168.30115 의 내용 으로 명중 에 성공 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.