>  기사  >  운영 및 유지보수  >  Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법

Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법

PHPz
PHPz원래의
2023-08-08 10:37:452580검색

Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법

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://localhostrrreee

다음, 추가 다음 Nginx 구성은 nginx.conf라는 파일로 저장됩니다.

rrreee

다음 명령을 실행하여 Nginx를 시작합니다.

rrreee

이제 http://localhost를 방문하여 액세스할 수 있습니다. 애플리케이션에 액세스합니다. 모든 요청은 Nginx 서버를 통해 프록시되고 로드 밸런싱됩니다. 🎜🎜요약🎜🎜연결 수를 제한하고 요청 대기열을 조정하면 동시성이 높은 네트워크 애플리케이션을 더 잘 관리할 수 있습니다. 위에서는 Nginx를 사용하여 연결 수를 제한하고 요청 대기열을 최적화하는 방법을 설명하고 간단한 Node.js 서버 코드 예제를 제공합니다. 실제 요구 사항과 서버의 하드웨어 성능을 기반으로 적절하게 구성을 조정하십시오. 🎜

위 내용은 Nginx 역방향 프록시 서버 연결 제한 및 요청 대기열 조정 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.