1..1리버스 프록시의 초기 인상
리버스 프록시란 프록시 서버가 인터넷에서 연결 요청을 받아 내부 네트워크의 서버에 요청을 전달하고 그 결과를 서버에서 인터넷으로 연결을 요청하는 클라이언트로 반환하는 것을 말합니다. 이 시점에서 프록시 서버는 외부에 하나의 서버로 나타납니다.
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
위 그림에서 볼 수 있듯이 역방향 프록시 서버는 웹 사이트실에 있으며 프록시 웹 서버는 Http 요청을 수신하고 전달합니다.
1.2 리버스 프록시의 역할
1 웹 사이트 보안 보호: 인터넷에서 오는 모든 요청은 먼저 프록시 서버를 거쳐야 합니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(2) 캐시 기능을 구성하여 웹 요청 속도를 높입니다. 실제 웹 서버의 정적 리소스를 캐시하여 실제 웹 서버의 로드 압력을 줄일 수 있습니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
③ 로드 밸런싱: 로드 밸런싱 서버로 작동하고, 요청을 균등하게 분배하며, 클러스터의 각 서버에 대한 로드 압력의 균형을 조정합니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
둘째, 초기 Nginx: 간단하지만 특별한
2. 1 Nginx 란 무엇입니까?
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
Nginx 는 역방향 프록시 및 이메일 프록시 서버인 경량 웹 서버입니다. BSD 와 같은 라이센스로 소스 코드를 배포하며 안정성, 풍부한 특성 세트, 샘플 구성 파일 및 낮은 시스템 리소스 소비로 유명합니다.
출처: Nginx (engine x 로 발음됨), 러시아 프로그래머 이고르 세소예프가 개발했다. 처음에는 러시아의 대형 포털과 검색 엔진 램블러 (러시아어: а а а а а а а) 에서 사용되었습니다. 이 소프트웨어는 BSD 와 같은 프로토콜을 통해 배포되며 UNIX, GNU/Linux, BSD, Mac OS X, Solaris, Microsoft Windows 및 기타 운영 체제에서 실행할 수 있습니다.
웹 서버의 경우 Apache 서버와 IIS 서버는 두 개의 거대 기업입니다. 하지만 더 빠르고 유연한 경쟁 업체인 Nginx 가 따라잡고 있습니다.
2.2 nginx 응용 프로그램 상태
Nginx 는 이미 보행자 미디어 (www) 에 있습니다. Rambler.ru), 러시아 최대 포털, 3 년 동안 러시아의 가상 호스트 플랫폼의 20% 이상이 Nginx 를 리버스 프록시 서버로 사용했습니다.
Nginx 가 리버스 프록시 서버를 구축하는 과정을 자세히 설명합니다. Nginx 가 리버스 프록시 서버를 구축하는 과정을 자세히 설명합니다. Nginx 가 리버스 프록시 서버를 구축하는 과정을 자세히 설명합니다. 중국에는 타오바오, 시나닷컴 블로그, 시나닷컴 팟캐스트, 인터넷뉴스, 6 개의 방, 56.com, Discuz 가 있습니다! 수목 커뮤니티, 콩잎, 유포, 해내, 신뢰와 같은 많은 사이트는 모두 Nginx 를 웹 서버 또는 리버스 프록시 서버로 사용합니다.
2.3 nginx 의 핵심 기능
(1) 크로스 플랫폼: Nginx 는 대부분의 Unix 클래스 OS 에서 컴파일할 수 있으며 Windows 마이그레이션 버전도 있습니다. (2) 구성은 매우 간단합니다. 매우 유용합니다. 구성 스타일은 프로그램 개발과 마찬가지로 신을 구성합니다. (3) 비차단 및 높은 동시 연결: 디스크 I/O 의 첫 번째 단계는 데이터 복제 시 차단되지 않습니다. 공식 테스트는 실제 프로덕션 환경에서 20000 ~ 30000 까지 동시 연결을 실행하는 50000 동시 연결을 지원할 수 있습니다. 이는 Nginx 가 최신 epoll 모델을 사용했기 때문입니다. PS: 웹 서버의 경우 먼저 요청의 기본 프로세스인 연결 설정-데이터 수신-데이터 전송을 살펴봅니다. 시스템 하층에서 위의 절차 (연결 설정-데이터 수신-데이터 전송) 는 시스템 하층의 읽기 및 쓰기 이벤트입니다.
(1) 차단 호출 방식을 사용하면 읽기 및 쓰기 이벤트가 준비되지 않은 경우 읽기 및 쓰기 이벤트를 수행할 수 없으므로 이벤트가 준비되고 요청이 지연될 때까지 오랜 시간을 기다려야 합니다.
(2) 차단 호출을 준비하지 않은 이상 비차단 호출 방법을 사용합니다. 비차단은 사건이 즉시 반환되어 사건이 아직 준비되지 않았음을 알려 준다는 것을 의미한다. 너 왜 당황해? 이따가 돌아오겠습니다. 좋아, 준비가 될 때까지 나중에 활동을 다시 확인할 수 있습니다. 이 기간 동안, 너는 먼저 다른 일을 하고 나서 행사가 준비되었는지 확인할 수 있다. 차폐는 없지만 수시로 와서 활동 상태를 점검해야 한다. 더 많은 일을 할 수 있지만 비용은 적지 않다.
(4) 이벤트 중심: 통신 메커니즘은 epoll 모델을 사용하여 더 큰 동시 연결을 지원합니다.
1 비차단은 이벤트의 상태를 지속적으로 검사하여 읽기 또는 쓰기 여부를 판단하여 많은 오버헤드를 초래하여 비동기식 비차단 이벤트 처리 메커니즘을 갖추고 있다. 이 메커니즘을 사용하면 여러 이벤트를 동시에 모니터링할 수 있습니다. 호출은 차단되지만 시간 초과를 설정할 수 있습니다. 시간 초과 기간 동안 이벤트가 준비되면 반환됩니다. 이 메커니즘은 위에서 설명한 차단 호출과 비차단 호출의 두 가지 문제를 해결합니다.
② epoll 모델을 예로 들자면, 이벤트가 준비되지 않으면 epoll (큐) 에 넣는다. 만약 사건이 이미 준비되었다면, 그것을 처리해라. 이벤트가 EAGAIN 을 반환하면 계속 epoll 에 넣습니다. 따라서 한 가지 사건이 준비되면 우리는 처리하고, 모든 사건이 준비되지 않은 경우에만 epoll 에서 기다릴 것이다. 이런 식으로 우리는 동시에 대량의 동시성을 처리할 수 있다. 물론 여기서 동시작업 요청은 완료되지 않은 요청을 의미하며 스레드가 하나뿐이므로 한 번에 하나의 요청만 처리할 수 있으며 요청 간의 지속적인 전환일 뿐입니다. 이런 전환도 비동기식 사건이 준비되지 않아 자발적으로 포기했기 때문이다. 여기서 전환하는 것은 비용이 들지 않는다. 여러 준비된 사건들을 순환하는 것으로 이해할 수 있는데, 실제로는 이렇다.
(3) 이 이벤트 처리 방식은 멀티 스레딩에 비해 큰 장점이 있다. 스레드를 만들 필요가 없습니다. 요청당 메모리 사용량이 매우 적고 컨텍스트 전환이 없습니다. 이벤트 처리는 매우 경량이며, 더 많은 동시성으로 인해 불필요한 자원 낭비 (컨텍스트 전환) 가 발생하지 않습니다. IIS 서버의 경우 요청당 작업자 스레드가 하나씩 있습니다. 동시 수가 수천 개에 이르면 수천 개의 스레드가 동시에 요청을 처리합니다. 이는 운영 체제에 큰 과제입니다. 스레드가 메모리를 많이 사용하고 스레드의 컨텍스트 전환으로 인한 CPU 오버헤드가 매우 커서 자연 성능이 올라가지 않아 높은 동시 장면에서 성능이 크게 저하됩니다.
요약: Nginx 는 비동기 비차단 이벤트 처리 메커니즘을 통해 여러 개의 준비된 이벤트를 하나의 루프에서 처리하여 높은 동시성과 경량성을 제공합니다.
(5) 주/근로자 구조: 하나 이상의 근로자 프로세스를 생성하는 주 프로세스입니다.
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
PS: 마스터 작업자-작업자 디자인 패턴의 핵심 아이디어는 원래의 직렬 논리를 병렬화하고 논리를 여러 개의 개별 모듈로 분할하여 병렬로 실행한다는 것입니다. 마스터와 작업자라는 두 가지 주요 구성 요소로 구성됩니다. 마스터는 주로 작업자 대기열을 유지 관리하고 각 개별 부분을 여러 작업자 병렬 실행에 할당하는 동안 논리를 개별 부분으로 분할합니다. 작업자는 주로 실제 논리 계산을 수행하고 결과를 마스터로 반환합니다.
Q: nginx 가 이 프로세스 모델을 채택하면 어떤 이점이 있습니까?
A: 별도의 프로세스를 사용하면 서로 영향을 미치지 않습니다. 한 프로세스가 종료된 후에도 다른 프로세스는 여전히 작동 중이고 서비스는 중단되지 않으며 마스터 프로세스는 새 작업자를 빠르게 다시 시작합니다. 물론, 작업자의 비정상적인 퇴출은 분명히 프로그램에 버그가 있는 것이 틀림없다. 비정상적인 종료로 인해 현재 작업자 스레드의 모든 요청이 실패하지만 모든 요청에 영향을 주지 않으므로 위험이 줄어듭니다.
(6) 낮은 메모리 소비: 큰 동시 요청을 처리하는 메모리 소비가 적습니다. 30,000 개의 동시 연결 시 10 개의 Nginx 프로세스만 150M 의 메모리 (15m *1) 를 소비하기 시작합니다
(7) 기본 제공되는 상태 점검 기능: Nginx 에이전트 백엔드의 웹 서버 중 하나가 다운되더라도 프런트엔드 액세스에 영향을 미치지 않습니다.
(8) 대역폭 절감: GZIP 압축을 지원하여 브라우저의 로컬 캐시 헤더를 추가할 수 있습니다.
(9) 높은 안정성: 리버스 프록시에 사용되며 다운타임 확률은 무시할 수 있습니다.
셋째, 실전 구축: Nginx+IIS 는 웹 서버 클러스터의 로드 밸런싱을 구축합니다. 여기서는 주로 동일한 웹 사이트를 다른 서버의 IIS 에 배포한 다음 통합 Nginx echo 프록시 서버를 통해 통합 액세스를 제공하여 Windows 환경에서 단순화된 역방향 프록시 및 로드 밸런싱 서비스를 제공합니다. 그러나 실험 조건에 따라, 우리는 주로 한 대의 컴퓨터에서 리버스 에이전트와 IIS 클러스터를 시뮬레이션한다. 구체적인 실험 환경은 다음과 같습니다. 우리는 한 대의 컴퓨터에 nginx 서비스와 웹사이트를 배포하고, nginx 는 ha97.com; 을 수신합니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(3) 로드 밸런싱 목록의 기본 구성:
위치/{}: aspx 접미사에 대한 로드 밸런싱을 요청합니다. Aspx 접미사가 있는 모든 파일에 대해 로드 밸런싱을 수행하려면 위치 ~ 를 쓸 수 있습니다. *\.aspx$ {}
Proxy_pass: 요청이 사용자 정의 서버 목록으로 전송됩니다. 여기서 모든 요청을 로드 밸런스 서버 목록으로 이동합니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
로드 밸런스 서버 목록의 구성에서 가중치는 시스템 구성에 따라 정의할 수 있는 가중치입니다 (한 서버의 하드웨어 구성이 매우 좋은 경우 더 많은 요청을 처리하고 더 높은 가중치를 설정할 수 있습니다. 한 서버의 하드웨어 구성이 좋지 않은 경우 이전 서버의 가중치를 weight=2 로, 다음 서버의 구성 차이는 weight= 1) 로 구성할 수 있습니다. Weight 매개변수는 가중치를 나타내며 가중치가 높을수록 할당될 확률이 높습니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(4) 요약: 가장 기본적인 Nginx 구성은 위와 비슷하지만, 물론 가장 기본적인 구성일 뿐이다. (상세 구성 아래에서 Nginx-1.4.7 다운로드) 3.4 정적 파일에 대한 새로운 nginx 캐시 구성.
응답 속도를 높이고 실제 서버의 로드를 줄이기 위해 리버스 프록시 서버에 정적 리소스를 캐시할 수 있습니다. 이는 리버스 프록시 서버의 중요한 역할이기도 합니다.
(1) 정적 리소스 그림 파일 캐시
Root/nginx-1.4.7/static resources/image: 구성에 언급된 jpg/png 등 모든 파일은/nginx-/kloc/로 설정됩니다 Expires 7d: 만료 시간은 7 일이며 정적 파일은 자주 업데이트되지 않으므로 만료 시간을 더 크게 설정하고 업데이트가 잦은 경우 더 작게 설정할 수 있습니다. 따뜻한 팁: 다음 스타일 및 스크립트 캐시 구성은 동일합니다. 단, 찾는 폴더가 다릅니다. 여기서는 자세히 설명하지 않습니다.
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(2) 정적 리소스의 스타일 파일 캐시
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(3) 정적 리소스의 스크립트 파일 캐시
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(4) nginx 서비스 폴더에 정적 리소스 폴더를 만들고 캐시할 정적 파일을 복사합니다. 여기서는 주로 웹 프로그램에 사용되는 그림, CSS, js 파일을 복사합니다. Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
(5) 요약: 정적 파일에 대한 캐시 설정을 구성하면 이러한 정적 리소스 요청을 특정 웹 서버에 전달하지 않고도 해당 정적 파일에 대한 요청을 리버스 프록시 서버에서 직접 반환할 수 있으므로 응답 속도가 향상되고 실제 웹 서버에 대한 로드 압력이 줄어듭니다.
3.5 Nginx 역방향 프록시 (1) 의 로드 밸런싱 효과를 간단히 테스트합니다. Http://localhost/Default.aspx 를 처음 방문하면 127.0.0. 1:8050 에서 응답을 반환합니다. (2) http://localhost/whendefault.aspx 를 방문할 때127.0.0.1:; (3) http://localhost/Default.aspx 를 여러 번 방문할 때의 스크린샷:
Nginx 역방향 프록시 서버 프로세스 세부 정보 구축
학습 요약
이 문서에서는 Nginx 를 사용하여 Windows 환경에서 IIS 서버 클러스터의 로드 균형 조정 효과를 시뮬레이션하는 역프록시 서비스를 간단히 구축했습니다. 이 데모에서는 리버스 에이전트가 우리를 위해 무엇을 했는지, 로드 밸런싱이 어떻게 되는지 간단히 느낄 수 있습니다. 하지만 현재 대부분의 어플리케이션에서 Nginx 는 Linux 서버에 구축되어 로드 밸런싱을 위해 최적화된 구성을 수행합니다. 우리가 여기서 하는 일은 단지 작은 용도일 뿐이다. (프로필만 수정하면 된다.) 그러나 초기의 작은 경험도 후기의 진일보한 학습을 위한 기초를 마련하는 데 도움이 될 것이다.
갑자기 QQ 공간에서 친구가 준 선물을 보았는데, 갑자기 오늘이 내 양력 생일이라는 것을 알게 되었다. 자, 생일 축하합니다. 앞으로 연습을 많이 하고 내용을 많이 나눌 수 있기를 바랍니다. 물론, 만약 당신이 문장 괜 찮 아 요, 좀 짱 주세요 생각 합니다. 너의 마우스 왼쪽 버튼을 인색하게 하지 마라.