[Nginx 필기] nginx 프로필 에 대한 구체 적 인 설명

7889 단어
본 고 는 주로 nginx 의 배치 에 대해 중점 적 으로 설명 하고 nginx 의 다른 기본 개념 에 대해 설명 한다.홈 페이지 묘사 서술 을 참고 할 것 을 건의 합 니 다.여 기 는 Nginx Beginner 's Guide 라 는 문 서 를 추천 합 니 다.처음 공 부 를 시작 한 사람 에 게 nginx 를 고속 으로 인식 하 는 데 도움 이 된다.
       분명 하 다.nginx 의 강력 한 장점 을 발휘 하 는 전 제 는 설정 파일 을 숙지 하고 합 리 적 인 설정 을 하 는 것 입 니 다.nginx 설정 을 배 울 때.가장 중요 한 것 은 다음 과 같은 개념 을 세 우 는 것 이다.
The most important is that nginx is a reverse proxy first and HTTP server second, its first concern is not files but rather URLs, this changes the way we have to configure nginx.
       즉, nginx 의 강력 한 점 은 고성능 의 역방향 대리 기능 (요청 을 받 고 하류 에 진정 으로 요청 을 처리 하 는 server 에 전달 하 며 하류 응답 을 기다 리 고 요청 발기인 에 게 되 돌아 가 는 것) 이다.그 다음으로 일반 웹 서버 처럼 정적 파일 접근 기능 을 제공 할 수 있다.
       우 리 는 nginx 소스 코드 를 컴 파일 하여 설 치 된 기본 설정 파일 (conf / nginx. conf. default) 을 예 로 들 었 습 니 다.중요 한 설정 항목 에 대해 설명 합 니 다
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
1. Nginx 프로필 블록 등급 관계       nginx 설정 파일 을 익히 려 면 먼저 블록 구분 과 블록 간 의 등급 관 계 를 잘 알 아야 합 니 다.UNDERSTANDING THE NGINX CONFIGURATION INHERITANCE MODEL 은 각 블록 의 등급 구분, 등급 또는 배치 항목 유형, 배치 항목 의 계승 관계 와 내장 블록 정의 등에 대해 구체 적 이 고 사례 가 있 는 설명 을 했 는데 여기 서 더 이상 언급 하지 않 습 니 다.       우 리 는 세 개의 블록 간 의 등급 관 계 를 기억 해 야 한다. http - > server - > location 은 nginx 설정 과정 에서 관건 적 인 블록 이다.2. 서버 블록 (가상 호스트)       server block 의 주요 목적 은 virtual server 를 만 드 는 것 입 니 다. 가장 중요 한 설정 항목 은 3 개 입 니 다.       1) listen         검색 주소, port 번호, UNIX - domain socket 의 경 로 를 설정 합 니 다.검색 주소 (ip 또는 hostname) 만 설정 할 수 있 습 니 다.이 경우 기본 검색 80port 도 검색 port 번호 만 지정 할 수 있다.또한 default 여 부 를 설정 할 수 있 습 니 다. server, 연결 ssl 암호 화 여부, proxyprotocol, 등등.구체 적 인 설정 문법 과 설정 항목 은 이곳 의 공식 문 서 를 참고 할 수 있 습 니 다.       2) server_name        이 server block 의 도 메 인 이름 을 설정 합 니 다. 정확 한 도 메 인 이름, 마스크 가 있 는 도 메 인 이름과 정규 표현 식 세 가지 형식 을 지원 합 니 다. 자세 한 규칙 은 여기 참조.nginx 요청 URL 을 받 으 면 각 server block 에 따라 설정 되 는 servername 이 요청 한 server 를 검색 하여 처리 합 니 다. 첫 번 째 match 성공 (URL 을 요청 한 header 가 지정 한 도 메 인 이름 이 server name 과 일치 함) 의 server block 은 URL 요청 을 처리 합 니 다.문서 에서 알 수 있 듯 이 자세 한 검색 순서 우선 순 위 는 다음 과 같 습 니 다 (높 은 것 에서 낮은 것).        a. the exact name         b. the longest wildcard name starting with an asterisk, e.g. “*.example.com”         c. the longest wildcard name ending with an asterisk, e.g. “mail.*”         d. the first matching regular expression (in order of appearance in the configuration file)        실제 설정 servername 시 정확 한 도 메 인 이름, * 로 시작 하 는 도 메 인 이름, * 로 끝 나 는 도 메 인 이름 은 listen port 와 연 결 된 3 개의 hash 표 에 저 장 됩 니 다.nginx 근거 servername 서버 블록 을 검색 할 때이 세 개의 hash 표를 위 순서대로 검색 합 니 다. hash 표 의 한 설정 만 명중 시 켜 야 합 니 다.검색 이 끝나 면 사용자 요청 URL 은 성공 적 으로 일치 하 는 server 에 게 전 달 됩 니 다.name 에 속 하 는 server 블록 으로 처리 합 니 다.3 개의 hash 표 가 모두 검색 에 실패 하면 정규 표현 식 형식의 server 를 순서대로 검색 합 니 다.name。reg exp match 가 상대 적 으로 느 리 기 때문이다.그래서 검색 우선 순위 가 가장 낮다.       그래서실제 사용 할 때, 우 리 는 가능 한 한 정확 한 도 메 인 이름 을 설정 해 야 한다.       또한, 매우 많은 server 이름 이나 서버 도 메 인 이름 을 설정 하려 면 매우 깁 니 다.각각 server 최적화 해 야 합 니 다.names_hash_max_size 와 servernames_hash_bucket_size 이 두 설정 항목.상세 한 설명 은 이 문서 의 Optimization 부분 을 볼 수 있다.       3) location        상세 한 설명 은 다음 소절 참조 3. Location 블록       location block 에 대해 서 는 다음 과 같은 몇 가지 중요 한 규칙 을 잘 알 아야 합 니 다.       1) 이름 location (named location) 블록 을 제외 합 니 다.나머지 location 블록 은 query 인자 가 없 는 URL 에 작용 하고 매번 에 1 개의 location 블록 만 작용 합 니 다.이것 도 폴 더 설정 이 보통 최상 위 블록 에 있 는 이유 입 니 다. location / 에 정 의 된 루트 폴 더 설정 은 location / images 에 사용 할 수 없 기 때 문 입 니 다. 루트 폴 더 를 server 블록 에 설정 하면 모든 location 블록 은 이 설정 을 사용 할 수 있 습 니 다 (물론 location 블록 에서 이 블록 의 루트 폴 더 설정 을 바 꿀 수 있 습 니 다).반복 코드 를 없 애 든 유지 보 수 를 하 든 훨씬 편리 해 야 한다.       2) nginx 는 location 블록 에 따라 server요청 URL 을 할당 합 니 다.nginx URL 과 location 블록 에 대한 match 규칙 은 다음 과 같 습 니 다 (홈 페이지 문 서 는 여기 있 습 니 다).        a. 우선 접두사 문자열 (prefix string) 이 정의 하 는 location 블록 을 찾 습 니 다.접두사 문자열 이 성공 적 으로 일치 하 는 모든 location 블록 에서 가장 긴 접두사 가 일치 하 는 블록 은 nginx 에 의 해 기 록 됩 니 다.        b. 이 어 nginx 는 설정 파일 에서 정 의 된 우선 순위 에 따라 정규 표현 식 으로 정 의 된 location 블록 을 검사 합 니 다. 정규 블록 이 성공 적 으로 일치 하면.검색 이 끝나 면 이 블록 은 URL 을 처리 하고 전체 match 과정 이 끝 납 니 다.        c. 정규 지정 한 location 블록 이 일치 하지 않 으 면 성공 합 니 다.첫 번 째 기록 의 최 장 접두사 가 일치 하 는 블록 을 되 돌려 줍 니 다.전체 match 프로 세 스 가 끝 났 습 니 다.        몇 가지 특별한 설명:        a. 정규 표현 식 으로 정 의 된 location 블록 은 비교적 낮은 검색 우선 순 위 를 가지 고 있 습 니 다.일치 우선 순위 가 높 습 니 다.이 점 은 nginx 검색 servername 의 규칙 이 다 릅 니 다.각별 한 주 의 를 끌 어야 한다.        b. location 은 등호 (=) 로 정확 한 설정 을 할 수 있 습 니 다. 가장 높 은 일치 우선 순 위 를 가지 고 정확 한 일치 하 는 location 만 명중 시 켜 야 합 니 다.nginx 에서 location 블록 에 대한 검색 이 곧 끝 납 니 다.       3) 설정 의 상세 한 문법 규칙 은 홈 페이지 문 서 를 참조 하고 여 기 는 군말 하지 않 습 니 다.4. 역 프 록 시 설정       주요 블록 (http / server / location) 의 기본 설정 규칙 을 숙지 하 는 전제 에서.nginx 를 설정 하여 역방향 프 록 시 서버 를 실현 하 는 것 은 사실상 매우 쉽다.location 블록 에서 proxy 설정 을 통 해pass 또는 fastcgi패스 는 이 루어 집 니 다.       또한, 어떤 sourceaddress 의 request 대 리 를 하위 서비스 (proxy bid) 로 설정 할 수 있 습 니까? 하위 응답 헤드 에 buffer 및 buffer 구역 크기 (proxy buffering / proxy buffer size) 를 할 지 여부 입 니 다.응답 결과 에 cache (proxy cache) 를 할 지 여부 입 니 다.잠깐 만.       구체 적 인 설정 문법 은 문서 Module ngx 를 참조 할 수 있 습 니 다.http_proxy_모듈 과 모듈 ngxhttp_fastcgi_module。 [참고 자료] 1. NGINX CONFIGURATION INHERITANCE MODEL 이해 하기  2. NGINX CONFIGURATION PRIMER   3. Nginx Beginner’s Guide  ======================= EOF ===================

좋은 웹페이지 즐겨찾기