nginx 정적 콘 텐 츠 서비스 제공 설정

7128 단어
serving - static - content
이 글 은 nginx 가 정적 콘 텐 츠 서 비 스 를 제공 하 는 방법 을 설정 하고 파일 경 로 를 어떻게 정의 하 는 지, index 파일 을 어떻게 설정 하 는 지 설명 할 것 입 니 다.
디 렉 터 리:
  • 루트 디 렉 터 리 및 index 파일
  • try_파일 명령
  • nginx 의 속도 최적화
  • sendfile 오픈
  • tcp 오픈nopush
  • tcp 오픈nodelay
  • 백 로그 큐 최적화
  • 측정 Listen Queue
  • 변조 시스템 파라미터
  • nginx 설정 매개 변수 조정


  • 루트 디 렉 터 리 및 index 파일
    루트 명령 은 nginx 가 파일 을 찾 는 기본 경 로 를 지정 하 는 데 사 용 됩 니 다. nginx 가 제공 하 는 파일 은 모두 이 경로 아래 에 있 습 니 다.
    nginx 는 루트 명령 이 지정 한 경로 에 요청 한 URI 를 추가 한 후 최종 파일 접근 경 로 를 만 듭 니 다.루트 명령 은 http, server 및 location 컨 텍스트 에 배치 할 수 있 습 니 다.다음 예 에서 루트 명령 은 server 컨 텍스트 에 정의 되 어 있 습 니 다. 한 location 이 루트 정 의 를 설정 하지 않 으 면 server 블록 에서 루트 명령 의 정 의 를 계승 합 니 다.
    server {
        root /www/data;
    
        location / {
        }
    
        location /images/ {
        }
    
        location ~ \.(mp3|mp4) {
            root /www/media;
        }
    }
    

    이 설정 을 기반 으로 URI 가 / images / 로 시작 하면 nginx 는 / www / data / images / 경로 에서 파일 을 찾 습 니 다.그러나 URI 가. mp3 또는. mp4 를 접미사 로 하면 nginx 는 / www / media 에서 파일 을 찾 습 니 다. 정규 표현 식 과 일치 하 는 location 이 더 높 은 우선 순위 가 있 기 때 문 입 니 다.
    요청 이 / 로 끝나 면 nginx 는 디 렉 터 리 에 대한 요청 으로 보고 이 디 렉 터 리 에서 index 파일 을 찾 으 려 고 합 니 다.index 명령 은 index 파일 의 이름 (기본 이름 은 index. html) 을 정의 합 니 다.요청 한 URI 가 /images/some/path/ 이면 nginx 는 /www/data/images/some/path/index.html 파일 을 찾 아 클 라 이언 트 에 게 되 돌려 보 냅 니 다.이 파일 이 존재 하지 않 으 면 nginx 는 기본적으로 404 (Not found) 오 류 를 되 돌려 줍 니 다.이 때 nginx 가 404 오류 가 아 닌 자동 으로 생 성 된 디 렉 터 리 목록 을 되 돌려 주 기 를 원한 다 면 autoindex 명령 을 사용 하여 설정 하 십시오.
    location /images/ {
        autoindex on;
    }
    

    index 명령 에서 여러 파일 이름 을 설정 할 수 있 습 니 다. nginx 는 설정 한 순서에 따라 순서대로 찾 고 첫 번 째 로 찾 은 파일 을 되 돌려 줍 니 다.
    location / {
        index index.$geo.html index.htm index.html;
    }
    

    $geo 변 수 는 geo 명령 에 의 해 정 의 된 사용자 정의 변수 입 니 다.이 변수의 값 은 클 라 이언 트 의 IP 주소 에 의존 합 니 다.
    nginx 가 index 파일 을 찾 으 면 내부 방향 을 바 꿉 니 다. 새로운 URI 는 index 파일 의 파일 이름 을 원래 URI 에 추가 합 니 다.내부 방향 을 바 꾼 후 nginx 는 새로운 URI 를 일치 하 게 찾 습 니 다. 다음은 다음 과 같 습 니 다.
    location / {
        root /data;
        index index.html index.php;
    }
    
    location ~ \.php {
        fastcgi_pass localhost:8000;
        ...
    }
    

    이 경우 요청 한 URI 가 / path / 이 고 /data/path/index.html 파일 이 존재 하지 않 지만 /data/path/index.php 파일 이 존재 할 경우 내부 리 셋 을 마 친 새 URI /path/index.php 는 두 번 째 location 에 일치 하 며 이 요청 은 최종 적 으로 백 엔 드 서버 에 전 송 됩 니 다.
    try_파일 명령 어
    try_files 명령 은 지정 한 파일 이나 디 렉 터 리 가 존재 하 는 지 확인 하 는 데 사 용 됩 니 다. 존재 하지 않 으 면 내부 방향 을 바 꾸 거나 지정 한 상태 코드 를 되 돌려 줍 니 다.
    예 를 들 어 try 를 사용 합 니 다.files 명령 과 $uri 변 수 는 요청 한 URI 에 대응 하 는 파일 이 존재 하 는 지 확인 할 수 있 습 니 다.
    server {
        root /www/data;
    
        location /images/ {
            try_files $uri /images/default.gif;
        }
    }
    

    이 경우 요청 한 URI 에 대응 하 는 파일 이 존재 하지 않 습 니 다. 예 를 들 어 URI /images/somefile.png, 해당 하 는 파일 경 로 는 /www/data/images/somefile.png 입 니 다. 이 파일 이 존재 하지 않 으 면 tryfiles 명령 은 원래 URI 내 부 를 /images/default.gif 로 재 설정 하고 nginx 는 다시 일치 하 는 검색 을 한 다음 /www/data/images/default.gif 파일 을 되 돌려 줍 니 다.
    try_files 명령 의 마지막 매개 변 수 는 상태 코드 (예 를 들 어 = 404) 또는 location 의 이름 일 수 있 습 니 다.아래 의 예 에서 만약 tryfiles 명령 의 모든 매개 변 수 는 존재 하 는 파일 이나 디 렉 터 리 로 해석 되 지 않 았 습 니 다. 404 오 류 를 되 돌려 줍 니 다.
    location / {
        try_files $uri $uri/ $uri.html =404;
    }
    

    다음 예 에서 원본 URI 와 URI / 가 존재 하 는 파일 이나 디 렉 터 리 로 해석 되 지 않 으 면 이 요청 은 이름 이 있 는 location 으로 재 설정 되 며, 이 location 는 요청 을 백 엔 드 서버 에 전송 합 니 다.
    location / {
        try_files $uri $uri/ @backend;
    }
    
    location @backend {
        proxy_pass http://backend.example.com;
    }
    

    Content Caching 을 볼 수 있 습 니 다. 웹 사이트 의 성능 을 크게 향상 시 키 는 방법 을 배우 고 nginx 의 캐 시 기능 을 깊이 이해 할 수 있 습 니 다.
    nginx 속도 최적화
    콘 텐 츠 서 비 스 를 제공 하 는 데 있어 서 로드 속 도 는 관건 적 인 성능 지표 이다.nginx 에 대한 작은 설정 을 통 해 nginx 의 성능 을 크게 향상 시 키 고 nginx 가 가장 좋 은 상태 에 가 까 운 상태 로 최적화 하도록 도와 줄 수 있 습 니 다.
    sendfile 열기
    기본적으로 nginx 는 파일 전송 을 처리 하고 파일 을 보 낼 때 파일 복사 tcp 를 버퍼 로 보 냅 니 다.
    sendfile 명령 을 실행 하면 전송 버퍼 로 데 이 터 를 복사 하 는 절 차 를 제거 합 니 다. 데 이 터 를 파일 설명자 에서 다른 파일 설명자 로 직접 복사 할 수 있 습 니 다.또한, 빠 른 연결 이 워 커 프로 세 스 를 완전히 차지 하 는 것 을 방지 하기 위해 sendfile () 시스템 호출 이 전달 할 수 있 는 데이터 크기 를 제한 하고 sendfile 을 사용 할 수 있 습 니 다.max_chunk 명령 어:
    location /mp3 {
        sendfile           on;
        sendfile_max_chunk 1m;
        ...
    }
    

    tcp 오픈nopush
    tcp_nginx 명령 은 sendfile on 과 함께 사용 합 니 다. 이 때 nginx 가 sendfile 을 통 해 데이터 블록 을 가 져 온 후 nginx 는 즉시 HTTP 응답 첫 번 째 부분 을 보 냅 니 다.
    location /mp3 {
        sendfile   on;
        tcp_nopush on;
        ...
    }
    

    tcp 오픈nodelay
    tcp_nodelay 명령 은 Nagle 's algorithm 을 덮어 쓸 수 있 습 니 다.이 알고리즘 은 저속 네트워크 에서 작은 데이터 메 시 지 를 보 내 는 문 제 를 해결 하기 위해 설계 되 었 다.이 알고리즘 은 일정 수량의 작은 메 시 지 를 빅 데이터 메시지 로 통합 하고 200 ms 의 지연 으로 메 시 지 를 보 냅 니 다.현재 시대 에 와 서 매우 큰 정적 파일 을 제공 할 때 메시지 의 크기 에 신경 쓰 지 않 고 데이터 메 시 지 를 즉시 보 낼 수 있다.이 지연 도 온라인 애플 리 케 이 션 (ssh, 온라인 게임, 온라인 거래) 에 영향 을 줄 수 있다.
    tcp_nodelay 명령 은 기본적으로 on 으로 설정 되 어 있 으 며 Nagle 's algorithm 알고리즘 사용 을 중단 하 는 것 을 의미 합 니 다.tcp_nodelay 는 지속 적 인 연결 에 만 사 용 됩 니 다:
    location /mp3  {
        tcp_nodelay       on;
        keepalive_timeout 65;
        ...
    }
    

    백 로그 큐 최적화
    nginx 의 가장 중요 한 능력 은 접근 연결 을 신속하게 처리 할 수 있다 는 것 이다.
    일반적으로 연결 에 대한 처 리 는 이 렇 습 니 다. 연결 이 만들어 지면 감청 소켓 의 listen 대기 열 에 들 어 갑 니 다.일반적인 접근 압력 하에 서 이 대기 열 은 매우 짧 거나 아예 이 대기 열 이 없다.그러나 높 은 접근 압력 하에 서 이 대기 열 은 빠르게 증가 하여 성능 디 더 링, 연결 손실, 방문 지연 문 제 를 일 으 킬 수 있 습 니 다.
    측정 Listen Queue
    명령 실행:
    netstat -Lan
    

    BSD 환경 에서 netstat 입 니 다. Linux 에서 netstat 출력 이 다 릅 니 다.
    명령 출력 은 다음 과 같 을 수 있 습 니 다:
    Current listen queue sizes (qlen/incqlen/maxqlen)
    Listen         Local Address         
    0/0/128        *.12345            
    10/0/128        *.80       
    0/0/128        *.8080
    

    이 출력 표시: 감청 포트 80 에 10 개의 연결 요청 이 있 습 니 다. 대기 열 상한 선 은 128 입 니 다. 이것 은 일반적인 접근 압력 에 의 한 요청 입 니 다.
    접근 압력 이 비교적 클 때 다음 과 같이 출력 할 수 있 습 니 다.
    Current listen queue sizes (qlen/incqlen/maxqlen)
    Listen         Local Address         
    0/0/128        *.12345            
    192/0/128        *.80       
    0/0/128        *.8080
    

    192 개의 받 아들 이지 않 은 연결 요청 이 표시 되 어 128 의 상한 치 를 초과 하 였 습 니 다.웹 사이트 의 접근 압력 이 클 때 흔히 볼 수 있 는 출력 입 니 다.최 적 화 된 성능 을 얻 기 위해 서 는 대기 행렬 의 상한 치 를 늘 려 야 합 니 다. 이 를 위해 서 는 운영 체제 의 매개 변수 와 nginx 의 설정 파 라미 터 를 조정 해 야 합 니 다.
    변조 시스템 매개 변수
    액세스 피크 트 래 픽 에 대응 하기 위해 net. core. somxconn 키 값 을 조정 합 니 다 (기본 값 은 128).
    FreeBSD 에 대한 실행:
    sudo sysctl kern.ipc.somaxconn=4096
    

    Linux 에 대한 실행:
    sudo sysctl -w net.core.somaxconn=4096
    
       /etc/sysctl.conf   
    vi /etc/sysctl.conf
    
            :
    net.core.somaxconn = 4096
    

    튜 닝 nginx
    somaxconn 값 이 512 이상 인 값 을 설정 했다 면 listen 명령 의 backlog 인 자 를 수정 해 야 합 니 다.
    server {
        listen 80 backlog 4096;
        # The rest of server configuration
    }
    

    저작권 정보: * 본문 은 ngix. com 에서 컴 파일 되 었 습 니 다.

    좋은 웹페이지 즐겨찾기