면접 점, nginx 기본 기능 과 작업 원리

6844 단어 Nginx
면접 에서 나 에 게 nginx 원 리 를 물 었 지만 나 는 대답 하지 못 했다.깊 은 통각 으로 나 는 다음 에 만 나 지 않도록 요점 을 잘 정리 했다.
Nginx 기본 기능 과 작업 원리
Nginx 는 고성능, 안정성, 풍부 한 기능, 간단 한 배치 와 낮은 자원 소모 로 유명 하 다.1. 역방향 대리, 정방 향 대리 2, 부하 균형 3, Nginx 원리 4, Ngnix 고성능 실현
역방향 에이전트 와 정방 향 에이전트
정방 향 프 록 시 는 클 라 이언 트 와 원본 서버 (origin server) 사이 에 있 는 서버 입 니 다. 원본 서버 에서 내용 을 얻 기 위해 클 라 이언 트 는 프 록 시 에 요청 을 보 내 고 대상 (원본 서버) 을 지정 한 다음 프 록 시 에 요청 을 전달 하고 얻 은 내용 을 클 라 이언 트 에 게 되 돌려 줍 니 다.클 라 이언 트 는 특별한 설정 을 해 야 정방 향 대 리 를 사용 할 수 있 습 니 다.
역방향 대리.만약 내 가 localhost: 8080 / produt / img / 1. jpg 페이지 를 방문 하려 고 한다 면, produt / img 에 대응 하 는 서버 에는 1. jpg 라 는 자원 이 없습니다. 이것 은 다른 서버 에서 호출 된 자원 입 니 다.이렇게 / produt / img / 에 대응 하 는 서버 는 역방향 프 록 시 를 사용 합 니 다.즉, 사용 자 는 특정한 역방향 프 록 시 서버 에 요청 만 보 내 고 구체 적 인 요청 이 누가 처 리 했 는 지 알 필요 가 없 으 며 프 록 시 서버 에서 통일 적 으로 처리 해 야 한 다 는 것 이다.결론 은 반대로 클 라 이언 트 에 게 원본 서버 와 같 고 클 라 이언 트 는 특별한 설정 을 할 필요 가 없다 는 것 이다.클 라 이언 트 는 프 록 시 이름 공간 (name - space) 의 내용 에 일반 요청 을 보 냅 니 다. 이 어 프 록 시 를 반대 방향 으로 요청 을 전달 하고 얻 은 내용 을 클 라 이언 트 에 게 되 돌려 줍 니 다. 이 내용 들 은 원래 자신의 것 과 같 습 니 다.
역방향 프 록 시 는 백 엔 드 의 여러 서버 에 부하 균형 을 제공 하거나 백 엔 드 가 느 린 서버 에 버퍼 서 비 스 를 제공 할 수 있다.정적 자원 1. jpg 방문
server {
    listen 80;
    autoindex on;
    server_name www.xxxxx(    );
    access_log /usr/local/nginx/logs/access.log combined;
    index index.html index.htm index.jsp index.php;
    #error_page 404 /404.html;
    if ( $query_string ~* ".*[\;'\].*" ){
        return 404;
    }

    location / {
        root /product/img/;
        add_header Access-Control-Allow-Origin *;
    }
}

백 엔 드 의 여러 서버 에 부하 균형 을 제공 합 니 다.
    upstream product_server{
        server www.product.com:8080;
    }
    upstream order_server{
        server www.image.com:8081;
    }
 
 
   #HTTP   
   server {
        #  80  ,80        ,  HTTP  
        listen       80;
        
        #    www.xx.com  
        server_name  www.nginx.com;    
      
        #    
        charset utf-8;
        
        #      
        proxy_connect_timeout 180;
        proxy_send_timeout 180;
        proxy_read_timeout 180;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarder-For $remote_addr;
        
        #    product server
        location / {
            proxy_pass http://product_server;
        }
 
		#  location          
        location /product/{
            proxy_pass http://product_server;
        }
 
        location /image/ {
            proxy_pass http://image_server;
        }
        
    }


부하 균형
부하 균형 도 Nginx 가 자주 사용 하 는 기능 이다. 부하 균형 은 여러 작업 단원 에 분담 하여 집행 하 는 것 을 의미한다. 예 를 들 어 웹 서버, FTP 서버, 기업 관건 응용 서버 와 기타 관건 적 인 임무 서버 등 이다.쉽게 말 하면 2 대 이상 의 서버 가 있 을 때 규칙 에 따라 무 작위 로 요청 을 지정 한 서버 에 나 누 어 처리 하 는 것 이다. 부하 균형 설정 은 일반적으로 역방향 프 록 시 를 동시에 설정 하고 역방향 프 록 시 를 통 해 부하 균형 으로 전환 해 야 한다.
Nginx 원리
Nginx 에는 master 프로 세 스 와 여러 worker 프로 세 스 가 있 습 니 다.master 프로 세 스 는 네트워크 요청 을 처리 하지 않 습 니 다. 주로 작업 프로 세 스 를 예약 합 니 다. 로 딩 설정, 작업 프로 세 스 시작 및 비 정지 업그레이드 입 니 다.worker 프로 세 스 는 네트워크 요청 과 응답 을 처리 합 니 다.master 프로 세 스 는 주로 worker 프로 세 스 를 관리 하 는 데 사 용 됩 니 다. 구체 적 으로 다음 과 같은 네 가지 주요 기능 을 포함 합 니 다. 1. 외부 에서 온 신 호 를 받 습 니 다.2. 각 워 커 프로 세 스에 신 호 를 보 냅 니 다.3. woker 프로 세 스 의 운행 상 태 를 모니터링 합 니 다.4. woker 프로 세 스 가 종료 되면 (이상 한 경우) 새로운 woker 프로 세 스 를 자동 으로 다시 시작 합 니 다.
woker 프로 세 스 는 주로 기본 적 인 네트워크 이 벤트 를 처리 하 는 데 사 용 됩 니 다. 1. 여러 워 커 프로 세 스 간 에 대등한 것 이 고 서로 독립 된 것 입 니 다. 그들 은 클 라 이언 트 의 요청 과 같은 경쟁 을 합 니 다.2. 하나의 요청 은 하나의 워 커 프로 세 스에 서 만 처리 할 수 있 습 니 다. 하나의 워 커 프로 세 스 는 다른 프로 세 스 의 요청 을 처리 할 수 없습니다.3. 워 커 프로 세 스 의 개 수 는 설정 할 수 있 습 니 다. 일반적으로 우 리 는 기계 cpu 핵 수 와 일치 하도록 설정 합 니 다.또한, nginx 는 다 핵 특성 을 잘 이용 하기 위해 cpu 바 인 딩 옵션 을 가지 고 있 습 니 다. 우 리 는 특정한 프로 세 스 를 특정한 핵 에 연결 할 수 있 습 니 다. 그러면 프로 세 스 의 전환 으로 인해 cache 의 실 효 를 가 져 오지 않 습 니 다.
Ngnix 는 어떻게 고성능 을 실현 합 니까?
이벤트 구동 모델
비동기 및 비 차단 사건 구동 모델 을 바탕 으로 Nginx 가 높 은 병행, 고성능 을 얻 을 수 있 는 관건 적 인 요소 라 고 할 수 있다.이 점 은 Netty 와 유사 하 며, 밑바닥 은 BSD kqueue, Linux epoll 및 Solaris event ports 를 사용 합 니 다.
다 중 프로 세 스 메커니즘
다 중 프로 세 스 를 사용 하 는 장점 은 두 가지 가 있 습 니 다.
  • 프로 세 스 간 에 자원 을 공유 하지 않 고 자 물 쇠 를 추가 할 필요 가 없 으 며 자 물 쇠 를 사용 하 는 것 이 성능 에 미 치 는 영향 을 줄 이 는 동시에 프로 그래 밍 의 복잡 도 를 낮 추고 개발 원 가 를 낮 춘 다.
  • 독립 된 프로 세 스 를 사용 하면 프로 세 스 가 서로 영향 을 주지 않 을 수 있 습 니 다. 프로 세 스 가 이상 하 게 종료 되면 다른 프로 세 스 가 정상적으로 작 동 하고 master 프로 세 스 는 곧 새로운 worker 프로 세 스 를 시작 하여 서비스 가 중단 되 지 않도록 확보 하여 위험 을 최소 화 할 수 있 습 니 다.

  • 메모리 탱크
    메모리 조각 이 발생 하지 않도록 운영 체제 에 메모리 신청 횟수 를 줄 이 고 각 모듈 의 개발 복잡 도 를 낮 추기 위해 Nginx 는 간단 한 메모리 풀 을 설계 했다. 주로 시스템 에 여러 번 메모 리 를 신청 하 는 작업 을 한 번 으로 통합 시 켜 CPU 자원 의 소 모 를 크게 줄 이 는 동시에 메모리 조각 을 줄 이 는 역할 을 한다.
    참고 자료
    1. Nginx 서버 의 내부 핵심 구조 디자인 2. nginx 구조 모델 분석

    좋은 웹페이지 즐겨찾기