nginx 정적 콘 텐 츠 서비스 제공 설정
이 글 은 nginx 가 정적 콘 텐 츠 서 비 스 를 제공 하 는 방법 을 설정 하고 파일 경 로 를 어떻게 정의 하 는 지, index 파일 을 어떻게 설정 하 는 지 설명 할 것 입 니 다.
디 렉 터 리:
루트 디 렉 터 리 및 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 에서 컴 파일 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.