연구 노트: 프록시 서버-Nginx


1. Nginx 소개

1. 엔진엑스란 무엇인가

  Nginx("엔진 Nginx는 성능 최적화를 위해 특별히 개발되었습니다. 성능이 가장 중요한 고려 사항입니다. 강도 측면에서 효율성에 중점을 두고 높은 부하 테스트를 견딜 수 있습니다. 보고서에 따르면 Nginx는 최대 50,000개의 동시 연결을 지원할 수 있습니다.

2. 역방향 프록시

Nginx는 로드 밸런싱을 달성하기 위한 역방향 프록시 역할만 할 수 있는 것이 아닙니다. 또한 인터넷 액세스 및 기타 기능을 위한 정방향 프록시로 사용할 수도 있습니다.

(1) 순방향 프록시
순방향 프록시: LAN의 인터넷을 거대한 리소스 라이브러리로 상상한다면 LAN의 클라이언트가 인터넷에 액세스하려면 프록시 서버를 통해 액세스해야 합니다. 이러한 종류의 프록시 서비스 전진 연기라고 합니다.프록시 서버를 통해 인터넷에 접속할 수 있도록 클라이언트(브라우저)에 프록시 서비스를 구성합니다.
여기에 이미지 설명을 삽입하세요.

(2) 역방향 프록시
역방향 프록시: 실제로 클라이언트는 프록시를 인식하지 못합니다.클라이언트는 액세스하기 위해 어떤 구성도 필요하지 않습니다., 역방향 프록시 서버에 요청만 보내면 역방향 프록시 서버는 대상 서버를 선택하여 데이터를 얻은 다음 이를 클라이언트에 반환합니다. 이때 역방향 프록시 서버와 대상 서버는 하나입니다. 서버를 외부 세계로 내보내고 프록시는 서버 주소를 노출하여 실제 서버 IP 주소를 숨깁니다.
여기에 이미지 설명을 삽입하세요.
(3) 둘의 차이점
순방향 프록시와 역방향 프록시의 차이점은 프록시의 개체가 다르다는 점입니다. 순방향 프록시의 개체는 클라이언트이고 역방향 프록시의 개체는 서버입니다.
순방향 프록시는 클라이언트의 프록시 역할을 하는 클라이언트 프록시이며 서버는 실제로 요청을 시작한 클라이언트를 알지 못합니다. 역방향
프록시는 서버의 프록시 역할을 하는 서버 프록시이며 클라이언트는 요청을 수행합니다. 실제로 서비스를 제공하는 서버를 모릅니다.
여기에 이미지 설명을 삽입하세요.

3. 로드 밸런싱

  클라이언트는 서버에 여러 요청을 보내고 서버는 요청을 처리합니다. 그 중 일부는 데이터베이스와 상호 작용해야 할 수도 있습니다. 서버는 처리를 완료한 후 결과를 클라이언트에 반환합니다.
  이 아키텍처 모델은 상대적으로 단순하고 동시 요청 수가 상대적으로 적으며 비용도 낮은 초기 시스템에 더 적합합니다. 그러나 접속량과 데이터량이 급격하게 증가하고 시스템 비즈니스의 복잡성이 증가함에 따라 이러한 아키텍처는 클라이언트 요청에 대한 서버의 응답 속도를 점점 더 느리게 만들 것이며, 특히 동시성 양이 많을 경우 서버의 오류를 쉽게 유발할 수 있습니다. 직접 충돌. 분명히 이는 서버 성능의 병목 현상으로 인해 발생하는 문제인데, 이 상황을 어떻게 해결해야 할까요?
  우리의 첫 번째 생각은 이 문제를 해결하기 위해 CPU 실행 빈도 증가, 메모리 증가 등 서버 구성을 업그레이드하여 서버의 물리적 성능을 향상시키는 것일 수도 있습니다. 그러나 우리는 무어의 법칙이 점점 더 유효하지 않다는 것을 알고 있으며, 하드웨어 성능 개선은 더 이상 증가하는 요구를 충족할 수 없습니다. 가장 확실한 예는 티몰의 더블 일레븐(Double Eleven) 당일 특정 인기 제품에 대한 순간 방문 수가 엄청나게 많았기 때문에 위의 시스템 아키텍처와 유사한 기존 최상위 물리적 구성에 기계를 추가하는 것이 불가능하다는 것입니다. .만약 요구가 충족된다면 우리는 어떻게 해야 할까요?
  위의 분석에서는 문제 해결을 위해 서버의 물리적 구성을 늘리는 방법을 제거했습니다. 즉, 수직적인 문제 해결 방법은 효과가 없을 것입니다. 수평적으로 서버 수를 늘리는 것은 어떻습니까? 이때 클러스터(Cluster)라는 개념이 생겨났다.단일 서버로는 문제를 해결할 수 없기 때문에 서버 수를 늘려 각 서버에 요청을 분산시키는 방식으로 원래 요청을 단일 서버에 집중시키는 대신 여러 서버에 요청을 분산시켜 서로 다른 서버에 부하를 분산시키는 방식을 취하고 있습니다. 로드 밸런싱 이라고 부르는 것입니다 .
여기에 이미지 설명을 삽입하세요.

4. 움직임과 정적의 분리

기존 배포 방법: Tomcat은 큰 압박을 받고 있음
여기에 이미지 설명을 삽입하세요.동적 및 정적 분리: 웹 사이트의 구문 분석 속도를 높이기 위해 동적 페이지와 정적 페이지를 서로 다른 서버에서 구문 분석하여 구문 분석 속도를 높일 수 있습니다. 단일 서버에 대한 부담을 줄입니다.
여기에 이미지 설명을 삽입하세요.


2. Nginx의 기본 사용법

1. Nginx에서 자주 사용되는 동작 명령어

  • Nginx 작업 명령 사용을 위한 전제 조건: nginx/sbin 디렉터리
    /usr/local/nginx/sbin을 입력해야 합니다.
  • Nginx 버전 번호 확인: ./nginx -v
  • Nginx 시작: ./nginx
  • Nginx 종료: ./nginx -s stop
  • Nginx 구성 파일을 다시 로드합니다: ./nginx -s reload

2. Nginx 구성 파일

(1) Nginx 구성 파일:/nginx/conf/nginx.conf
여기에 이미지 설명을 삽입하세요.(2) Nginx 구성 파일의 구성

Nginx 구성 파일은 세 부분으로 구성됩니다.

1부: 전역 블록
여기에 이미지 설명을 삽입하세요.
구성 파일 시작 부분부터 이벤트 블록까지의 내용은 주로 Nginx 서버를 실행하는 사용자(그룹) 구성, 생성할 수 있는 작업자 프로세스 수, 프로세스 PID 저장 경로 및 로그 저장 경로 및 유형, 구성 파일 소개 등
예를 들어 위에서 구성한 첫 번째 줄은 worker_processes 1Nginx 서버 동시 처리 서비스의 핵심 구성인데, Worker_processes 값이 클수록 더 많은 동시 처리를 지원할 수 있지만 하드웨어, 소프트웨어 및 기타 장비에 의해 제한됩니다.

2부: 이벤트 블록

  이벤트 블록에 설계된 명령어는 주로 Nginx 서버와 사용자 간의 네트워크 연결에 영향을 미치며, 일반적으로 사용되는 설정에는 여러 작업 프로세스에서 네트워크 연결 직렬화를 활성화할지 여부, 여러 네트워크 연결을 동시에 수신하도록 허용할지 여부, 처리를 위해 선택할 이벤트 기반 모델 연결 요청, 각 워드 프로세스가 동시에 지원할 수 있는 최대 연결 수 등
여기에 이미지 설명을 삽입하세요.
  위 그림의 예에서는 각 작업 프로세스에서 지원하는 최대 연결 수를 1024로 식별합니다. 이 구성 부분은 Nginx의 성능에 더 큰 영향을 미치므로 실제로는 유연하게 구성해야 합니다.

3부: http 블록
여기에 이미지 설명을 삽입하세요.
이 모듈은 Nginx 서버 구성에서 가장 자주 사용되는 부분으로, 프록시, 캐시, 로그 정의 및 타사 모듈 구성과 같은 대부분의 기능이 여기에 있습니다. 알아야 할 사항은 다음과 같습니다.http 블록에는 http 전역 블록과 서버 블록도 포함될 수 있습니다.

① http 글로벌 블록
http 전역 블록 구성 지침에는 파일 소개, MIME-TYPE 정의, 로그 사용자 정의, 연결 시간 초과, 단일 링크 요청 상한 등이 포함됩니다.

② 서버 블록
이는 가상호스트와 밀접한 관련이 있으며, 가상호스트 입장에서는 독립된 하드웨어 호스트와 완전히 동일하며, 인터넷 서버 하드웨어 비용을 절감하기 위해 탄생한 기술이다.
각 http 블록은 여러 서버 블록을 포함할 수 있으며 각 서버 블록은 가상 호스트와 동일합니다.
각 서버 블록은 글로벌 서버 블록으로 나누어지며 동시에 여러 위치 블록을 포함할 수 있습니다.

  • 전역 서버 블록
      의 가장 일반적인 구성 은 이 가상 호스트의 수신 구성과 이 가상 호스트의 이름 또는 IP 구성입니다.
  • 위치 블록
      서버 블록은 여러 위치 블록으로 구성될 수 있습니다.
      이 블록의 주요 기능은 수신된 요청 문자열(예: server_name/uri-string)을 기반으로 가상 호스트 이름(IP 별칭일 수도 있음)(예: 이전 /uri-string) 이외의 문자열을 처리하는 것입니다. Nginx 서버에 의해 특정 요청을 일치시키고 처리합니다. 주소 지정, 데이터 캐싱, 응답 제어 등의 기능과 다양한 타사 모듈 구성도 여기에서 수행됩니다.

추천

출처blog.csdn.net/qq_45867699/article/details/117023064