Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법
Nginx 역방향 프록시 서버는 동시성 높은 네트워크 애플리케이션을 실행할 때 매우 일반적이고 안정적인 선택입니다. 그러나 연결 제한 및 요청 대기열이 제대로 구성되지 않으면 서버에서 성능 병목 현상 및 서비스 거부 문제가 발생할 수 있습니다. 이 기사에서는 Nginx를 사용하여 연결 수를 제한하고 요청 대기열을 최적화하는 방법을 소개합니다.
연결 제한
Nginx는 Worker_connections 매개변수를 설정하여 연결 수를 제한할 수 있습니다. 이 매개변수는 각 작업자 프로세스가 동시에 처리할 수 있는 최대 연결 수를 지정합니다. 연결 수가 이 제한에 도달하면 새 연결이 거부됩니다.
Nginx 구성 파일을 열고 http 블록을 찾아 다음 줄을 추가하거나 수정합니다.
http { ... worker_processes auto; worker_connections 1024; ... }
위의 예에서 작업자_연결은 1024로 설정됩니다. 이는 각 작업자 프로세스가 동시에 1024개의 연결을 처리할 수 있음을 의미합니다. 서버의 하드웨어 성능 및 애플리케이션 요구 사항에 따라 실제 조건에 따라 조정할 수 있습니다. 서버 리소스를 최대한 활용하려면 작업자_프로세스 값을 CPU 코어 수의 배수로 설정해야 합니다.
요청 대기열 조정
동시 연결 수가 Worker_connections 제한을 초과하면 Nginx는 처리를 기다리는 대기열에 요청을 넣습니다. 요청 대기열 길이와 시간 초과를 조정하여 서비스 거부 가능성을 최소화할 수 있습니다.
Nginx 구성 파일 편집을 진행하고 다음 줄을 추가하거나 수정합니다.
http { ... events { accept_mutex off; worker_connections 1024; worker_processes auto; multi_accept on; use epoll; ... } ... server { ... location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_buffering on; ... } ... } }
위 예에서는 요청 대기열에 여러 가지 조정을 수행했습니다. 먼저, accept_mutex를 off로 설정하여 여러 작업자 프로세스가 동시에 새로운 연결을 수락할 수 있도록 뮤텍스를 비활성화합니다. 둘째, Nginx가 대기열의 모든 요청을 최대한 빨리 처리할 수 있도록 multi_accept를 on으로 설정합니다. 마지막으로 실제 필요에 따라 시간 제한과 버퍼 크기를 설정합니다.
코드 예제
아래는 백엔드 애플리케이션을 시뮬레이션하는 간단한 Node.js 서버의 예입니다.
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World! '); }); server.listen(3000, 'localhost', () => { console.log('Server running at http://localhost:3000/'); });
위의 예에서는 로컬 포트 3000을 수신하는 간단한 HTTP 서버를 만들었습니다. 이 서버는 데모용이므로 간단한 "Hello, World!" 문자열만 반환합니다.
Nginx를 역방향 프록시 서버로 사용하려면 위의 샘플 코드를 server.js
라는 파일로 저장하고 다음 명령을 실행하여 서버를 시작해야 합니다. server.js
的文件,并执行以下命令来启动服务器:
node server.js
接下来,将以下Nginx配置保存为一个名为nginx.conf
的文件:
http { ... server { listen 80; location / { proxy_pass http://localhost:3000; } } }
通过执行以下命令来启动Nginx:
nginx -c /path/to/nginx.conf
现在,您可以通过访问http://localhost
rrreee
nginx.conf
라는 파일로 저장됩니다. rrreee
다음 명령을 실행하여 Nginx를 시작합니다.rrreee
이제http://localhost를 방문하여 액세스할 수 있습니다. 애플리케이션에 액세스합니다. 모든 요청은 Nginx 서버를 통해 프록시되고 로드 밸런싱됩니다. 🎜🎜요약🎜🎜연결 수를 제한하고 요청 대기열을 조정하면 동시성이 높은 네트워크 애플리케이션을 더 잘 관리할 수 있습니다. 위에서는 Nginx를 사용하여 연결 수를 제한하고 요청 대기열을 최적화하는 방법을 설명하고 간단한 Node.js 서버 코드 예제를 제공합니다. 실제 요구 사항과 서버의 하드웨어 성능을 기반으로 적절하게 구성을 조정하십시오. 🎜
위 내용은 Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!