Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론
Nginx의 캐싱 메커니즘과 성능 튜닝 기술을 자세히 살펴보세요
소개:
오늘날 웹 개발에서 고성능과 높은 동시성은 우리가 추구하는 목표입니다. 고성능 웹 서버인 Nginx의 캐싱 메커니즘과 성능 튜닝 기술은 웹 사이트의 로드 용량을 향상시키는 데 매우 중요합니다. 이 기사에서는 Nginx의 캐싱 메커니즘과 성능 조정 기술을 자세히 살펴보고 관련 코드 예제를 제공합니다.
1. Nginx의 캐싱 메커니즘
Nginx의 캐싱 메커니즘은 프록시 캐시 모듈을 통해 구현됩니다. 다음에 동일한 요청이 오면 백엔드 서버에 요청을 보낼 필요 없이 캐시에서 직접 데이터를 읽을 수 있도록 프록시된 데이터를 로컬로 캐시할 수 있습니다. 이를 통해 백엔드 서버에 대한 부담을 크게 줄이고 웹사이트의 응답 속도를 향상시킬 수 있습니다.
-
캐싱 활성화
Nginx의 캐싱 기능을 활성화하려면 먼저 Nginx 구성 파일에 다음 코드를 추가해야 합니다.http { ... proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; proxy_temp_path /data/nginx/tmp; ... }
로그인 후 복사이 코드에서
proxy_cache_path
는 캐시 경로 및 일부 관련 매개변수를 정의합니다. . 그 중levels
매개변수는 캐시 경로에 생성된 디렉터리 수준을 나타내며,keys_zone
매개변수는 캐시된 인덱스 및 관련 메타데이터를 저장하는 데 사용되는 공유 메모리 영역을 정의합니다. >max_size 매개변수는 캐시의 최대 크기를 정의합니다.inactive
매개변수는 특정 기간 동안 액세스되지 않은 캐시가 만료된 것으로 간주됨을 나타냅니다. 매개변수는 캐시 파일을 임시 경로에 배치할지 여부를 지정합니다.proxy_cache_path
定义了缓存的路径和一些相关的参数。其中,levels
参数表示在缓存路径中创建的目录层级,keys_zone
参数定义了一个共享内存区域,用于存储缓存的索引和相关元数据,max_size
参数定义了缓存的最大大小,inactive
参数表示超过一定时间没有被访问的缓存将被认为是过期的,use_temp_path
参数指定是否将缓存文件放在临时路径中。 配置缓存规则
要指定哪些请求需要被缓存,可以在Nginx的配置文件中添加以下代码:http { ... location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_valid 200 304 1h; } ... }
로그인 후 복사在这段代码中,
proxy_pass
指令定义了要代理到的后端服务器地址,proxy_cache
指定了使用的缓存区域,proxy_cache_valid
定义了HTTP状态码200和304被缓存的时间。刷新和清理缓存
为了保证数据的实时性和准确性,我们有时需要手动刷新或清理缓存。可以在Nginx的配置文件中添加以下代码:http { ... location /flush_cache { internal; proxy_cache_purge my_cache "$scheme$request_method$host$request_uri"; return 200 "Cache flushed successfully"; } ... }
로그인 후 복사在这段代码中,
location
指定了刷新缓存的URL,internal
指令限制了该请求只能被Nginx内部调用,proxy_cache_purge
指令用于清理缓存。
二、Nginx的性能调优技巧
除了缓存机制之外,我们还可以通过一些性能调优的技巧来进一步提升Nginx的性能。
提高Worker进程的并发连接数
Nginx默认配置的Worker进程数较少,可以通过修改配置文件来提高Worker进程的数量,从而提高并发连接数:worker_processes auto; events { worker_connections 4096; }
로그인 후 복사在这段代码中,
worker_processes
指定了Worker进程的数量,events
部分则指定了每个Worker进程的最大并发连接数。配置TCP连接和超时参数
合理配置TCP连接和超时参数可以提高Nginx的性能:http { ... keepalive_timeout 65; keepalive_requests 100; send_timeout 2m; client_header_timeout 1m; ... }
로그인 후 복사在这段代码中,
keepalive_timeout
定义了一个客户端连接在没有任何请求的情况下保持活跃的最大时间,keepalive_requests
定义了一个客户端连接请求的最大次数,send_timeout
定义了向客户端发送响应的最长时间,client_header_timeout
定义了接收客户端请求头的最长时间。启用Gzip压缩
启用Gzip压缩可以减小传输的数据量,提高页面加载速度:http { ... gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json; ... }
로그인 후 복사在这段代码中,
gzip
指令启用了Gzip压缩,gzip_disable
指定了不压缩msie6
浏览器的请求,gzip_types
캐싱해야 할 요청을 지정하려면 Nginx 구성 파일에 다음 코드를 추가하면 됩니다.
rrreee
proxy_pass
지시어는 프록시를 정의합니다. 백엔드 서버 주소 proxy_cache
는 사용되는 캐시 영역을 지정하고, proxy_cache_valid
는 HTTP 상태 코드 200 및 304가 캐시되는 시간을 정의합니다. 🎜🎜🎜🎜캐시 새로 고침 및 지우기🎜데이터의 실시간 및 정확성을 보장하기 위해 때때로 캐시를 수동으로 새로 고치거나 지워야 할 때가 있습니다. Nginx 구성 파일에 다음 코드를 추가할 수 있습니다. 🎜rrreee🎜이 코드에서 location
은 캐시를 새로 고치는 URL을 지정하고 internal
지시문은 요청을 다음으로 제한합니다. Nginx에서 내부적으로 호출되는 proxy_cache_purge
지시문은 캐시를 정리하는 데 사용됩니다. 🎜🎜🎜🎜2. Nginx 성능 조정 기술🎜 캐싱 메커니즘 외에도 일부 성능 조정 기술을 사용하여 Nginx의 성능을 더욱 향상시킬 수도 있습니다. 🎜🎜🎜🎜작업자 프로세스의 동시 연결 수 늘리기🎜Nginx에는 기본적으로 더 적은 수의 작업자 프로세스가 구성되어 있습니다. 구성 파일을 수정하여 동시 연결 수를 늘리면 작업자 프로세스 수를 늘릴 수 있습니다. 🎜rrreee 🎜이 코드에서 worker_processes
는 작업자 프로세스 수를 지정하고 events
섹션은 각 작업자 프로세스에 대한 최대 동시 연결 수를 지정합니다. 🎜🎜🎜🎜TCP 연결 및 시간 초과 매개변수 구성 🎜 TCP 연결 및 시간 초과 매개변수를 올바르게 구성하면 Nginx의 성능이 향상될 수 있습니다. 🎜rrreee🎜 이 코드에서 keepalive_timeout
은 클라이언트 연결을 정의합니다. 요청 시 활성 상태를 유지합니다. keepalive_requests
는 클라이언트에 대한 최대 연결 요청 수를 정의하고, send_timeout
은 클라이언트에 응답을 보내는 최대 시간을 정의합니다. client_header_timeout은 클라이언트 요청 헤더를 수신하는 최대 시간을 정의합니다. 🎜🎜🎜🎜Gzip 압축 활성화🎜Gzip 압축을 활성화하면 전송되는 데이터의 양을 줄이고 페이지 로딩 속도를 향상시킬 수 있습니다. 🎜rrreee🎜이 코드에서 gzip
지시문은 Gzip 압축, gzip_disable는 <code>msie6
브라우저의 요청이 압축되지 않음을 지정하고, gzip_types
는 Gzip 압축이 필요한 MIME 유형을 지정합니다. 🎜🎜🎜🎜결론: 🎜Nginx의 캐싱 메커니즘과 성능 튜닝 기술을 깊이 탐구함으로써 Nginx를 더 잘 이해하고 적용할 수 있으며 웹 사이트의 로드 용량과 사용자 경험을 효과적으로 향상시킬 수 있습니다. 캐싱 메커니즘과 성능 매개 변수를 올바르게 구성하고 실제 조건에 따라 조정하면 고성능 및 동시성 웹 개발에서 더 나은 결과를 얻을 수 있습니다. 이 글이 독자들에게 도움이 되기를 바랍니다. 🎜위 내용은 Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











nginx 버전을 쿼리 할 수있는 메소드는 다음과 같습니다. nginx -v 명령을 사용하십시오. nginx.conf 파일에서 버전 지시문을 봅니다. nginx 오류 페이지를 열고 페이지 제목을 봅니다.

클라우드 서버에서 nginx 도메인 이름을 구성하는 방법 : 클라우드 서버의 공개 IP 주소를 가리키는 레코드를 만듭니다. Nginx 구성 파일에 가상 호스트 블록을 추가하여 청취 포트, 도메인 이름 및 웹 사이트 루트 디렉토리를 지정합니다. Nginx를 다시 시작하여 변경 사항을 적용하십시오. 도메인 이름 테스트 구성에 액세스하십시오. 기타 참고 : HTTPS를 활성화하려면 SSL 인증서를 설치하고 방화벽에서 포트 80 트래픽을 허용하고 DNS 해상도가 적용되기를 기다립니다.

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

Nginx 서버를 시작하려면 다른 운영 체제에 따라 다른 단계가 필요합니다. Linux/Unix System : Nginx 패키지 설치 (예 : APT-Get 또는 Yum 사용). SystemCTL을 사용하여 nginx 서비스를 시작하십시오 (예 : Sudo SystemCtl start nginx). Windows 시스템 : Windows 바이너리 파일을 다운로드하여 설치합니다. nginx.exe 실행 파일을 사용하여 nginx를 시작하십시오 (예 : nginx.exe -c conf \ nginx.conf). 어떤 운영 체제를 사용하든 서버 IP에 액세스 할 수 있습니다.

단계를 따르면 Docker 컨테이너 이름을 쿼리 할 수 있습니다. 모든 컨테이너 (Docker PS)를 나열하십시오. 컨테이너 목록을 필터링합니다 (GREP 명령 사용). 컨테이너 이름 ( "이름"열에 위치)을 가져옵니다.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

Docker Container Startup 단계 : 컨테이너 이미지를 당기기 : "Docker Pull [Mirror Name]"을 실행하십시오. 컨테이너 생성 : "docker"[옵션] [미러 이름] [명령 및 매개 변수]를 사용하십시오. 컨테이너를 시작하십시오 : "Docker start [컨테이너 이름 또는 ID]"를 실행하십시오. 컨테이너 상태 확인 : 컨테이너가 "Docker PS"로 실행 중인지 확인하십시오.

Nginx가 Apache를 실행하려면 다음을 수행해야합니다. 1. Nginx 및 Apache를 설치하십시오. 2. NGINX 에이전트를 구성합니다. 3. nginx와 apache를 시작하십시오. 4. 구성을 테스트하여 도메인 이름에 액세스 한 후 Apache 컨텐츠를 볼 수 있는지 확인하십시오. 또한 포트 번호 매칭, 가상 호스트 구성 및 SSL/TLS 설정과 같은 다른 문제에주의를 기울여야합니다.
