nginx 입문 시리즈 1

13638 단어 nginx
오늘 나 눌 내용 은 nginx 의 기본 지식 입 니 다.
conf 파일 설명 부터 볼 게 요.
# vi nginx.conf

user    nobody nobody; #       nginx         

worker_processes    2; #         nginx     ,     CPU       

error_log   logs/error.log  notice; #         

pid logs/nginx.pid; # pid    

events {
    worker_connections  1024; #           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;

keepalive_timeout   65; # keepalive     

#           ,   server             

server {

listen  80; 

#         ip     80,      192.168.1.202:80,    ,     192.168.1.202    80   

server_name www.heytool.com; #    

root        /www/html/www.heytool.com; #         (    )

index   index.html index.htm; #     

location / {    #         location
    root    /www/html/www.heytool.com; #         (    )
    }

error_page  500 502 503 504 /50x.html;

#         ,    500   ,          50x.html       

location = /50x.html {
    root    /www/html/www.heytool.com;
        }
}

#         

bbs.heytool.com server {
    listen  80;
    server_name bbs.heytool.com;  
    root    /www/html/bbs.heytool.com;
    index   index.html index.htm; #      
    location / {
    root    /www/html/bbs.heytool.com;
      }
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html {
    root    /www/html/bbs.heytool.com;
        }
    }
}

nginx 시작, 테스트, 닫 기, 다시 시작
# /usr/local/nginx-1.0.6/sbin/nginx //   nginx
# /usr/local/nginx-1.0.6/sbin/nginx –t //   nginx         
# /usr/local/nginx-1.0.6/sbin/nginx –s reload //   nginx
# /usr/local/nginx-1.0.6/sbin/nginx –s stop //   nginx

nginx 가상 호스트 설정
즉, 우리 가 흔히 말 하 는 도 메 인 이름 설정 입 니 다.
server_name:       ,       ,     ,         
server_name b.ttlsa.com c.ttlsa.com d.ttlsa.com,    ,        ,        listen 80,   ip    ,        ,          ip   80   ,       127.0.0.1   80,    :
listen 127.0.0.1:80
root /data/site/b.ttlsa.com:     ,          。 :           ,        
access_log /data/logs/nginx/b.ttlsa.com-access.log main:     location /{}

nginx 위치 설정
문법 규칙: location [= | ~ | ~ * | ^ ~] / uri / {...}
  • = 정확 한 매 칭 을 나타 내 는데 이 우선 순위 도 가장 높다
  • ^ ~ uri 는 일반적인 문자열 로 시작 하여 url 경로 와 일치 하 는 것 으로 이해 하면 됩 니 다.nginx 는 url 에 인 코딩 을 하지 않 기 때문에 / static / 20% / aa 로 요청 합 니 다. 규칙 ^ ~ / static / / aa 에 일치 할 수 있 습 니 다 (빈 칸 주의).
  • ~ 대소 문 자 를 구분 하 는 정규 일치
  • ~ * 대소 문 자 를 구분 하지 않 는 정규 일치 (위의 유일한 차이 점 은 대소 문자)
  • !~와!대소 문자 의 일치 하지 않 음 과 대소 문자 의 일치 하지 않 음 을 구분 하 는 정규
  • / 공통 일치, 모든 요청 이 일치 합 니 다. 기본 일치.
  • 여러 location 설정 의 경우 일치 하 는 순 서 는 다음 과 같 습 니 다.
    우선 일치 =, 그 다음 일치 ^ ~, 그 다음은 파일 의 순서 에 따라 정규 일치, 마지막 으로 전달 / 통용 일치.일치 가 성공 하면 일치 하지 않 고 현재 일치 하 는 규칙 에 따라 요청 을 처리 합 니 다.
      ,       : 
    location / 
        {
            echo "/"; //     echo     ,             
        }
    location = / 
        { 
        echo "=/";
        }
    location = /nginx 
        { 
        echo "=/nginx";
        }
    location ~ \.(gif|jpg|png|js|css)$ 
        { echo "small-gif/jpg/png";
        }
    location ~* \.png$ 
        { echo "all-png";
        }
    location ^~ /static/ 
        { echo "static";
        }
    

    그러면http://a.ttlsa.com/, 완전히 일치 = / 2.http://a.ttlsa.com/nginx완전히 일치 합 니 다.http://a.ttlsa.com/xxx/1111.PNG (이것 은 대문자 입 니 다) 마지막 으로 ~ *. png $4 와 일치 합 니 다.http://a.ttlsa.com/static/1111.png, static 는 맨 뒤에 놓 여 있 지만 ^ 가 있 기 때문에 그 가 가장 잘 어울린다.
    nginx root & alias 파일 경로 설정
    nginx 가 지정 한 파일 경 로 는 루트 와 alias 두 가지 방식 이 있 습 니 다. 루트 와 alias 는 주로 nginx 가 location 뒤의 uri 를 어떻게 설명 하 는 지 에 달 려 있 습 니 다. 이 는 각각 다른 방식 으로 서버 파일 에 요청 을 표시 합 니 다.
       :
    location ~ ^/weblogs/ {
    root /data/weblogs/www.ttlsa.com; autoindex on;
    auth_basic  "Restricted"; auth_basic_user_file  passwd/weblogs;
    }
            URI  /weblogs/httplogs/www.ttlsa.com-access.log  ,web             
    /data/weblogs/www.ttlsa.com/weblogs/httplogs/www.ttlsa.com-access.log    。 [info]root        URI      ,   /path/uri。[/info]   ,         path/weblogs/httplogs/www.ttlsa.com-access.log。
    
       :
    
    
    location ^~ /binapp/ {
    limit_conn limit 4; limit_rate 200k; internal;
    alias /data/statics/bin/apps/;
    }
    alias    location           ,                 。        URI  
    /binapp/a.ttlsa.com/favicon  ,web             
    /data/statics/bin/apps/a.ttlsa.com/favicon.jgp    。 [warning]1.    alias  ,         ”/”。
    2. alias         。
    3. alias         ,                    。
    4.  alias      location   。[/warning]
    

    요약 하면 루트 는 뿌리 에 해당 하고 특별한 점 은 뿌리 가 어디 에 있 습 니까?
    한편, alias 는 별명, 즉 매 핑 된 경로 이 고 다른 곳 일 수도 있 기 때문에 그 자체 가 지 워 야 합 니 다.
    nginx 변수
    ngx_http_core_module 모듈 은 대량의 변 수 를 제공 합 니 다.
              
    $arg_PARAMETER	HTTP          , /index.php?site=www.ttlsa.com,   $arg_site     www.ttlsa.com    .
    $args HTTP	        。  ,   /index.php?width=400&height=200  ,$args        width=400&height=200.
    $binary_remote_addr               。  :\x0A\xE0B\x0E
    $body_bytes_sent                  http    ,        
    $content_length                     Content-Length   
    $content_type              Content-Type   
    $cookie_COOKIE                       cookie   
    $document_root                     root      
    $uri           URI,      
    $document_uri	 $uri     
    $request_uri	             URI,      。$uri  $document_uri            ,                URI, $request_uri       ,          URI.
    $host              Host   。   Host      ,        server
    (    )    。   Host        ,  IP:PORT,  $host       ,     IP。$host      。      http_HEADER    http_host   ,http_host     Host       。
    $hostname     Nginx        ,  gethostbyname         
    $http_HEADER	     HTTP          。HEADER      。  ,     Host        	  $http_host  
    $sent_http_HEADER	         HTTP          。HEADER      。  ,  $sent_ http_content_type       Content-Type       
    $is_args	       URI      ,     ,$is_args    ?,      ,       
    $limit_rate                ,0      
    $nginx_version               Nginx     
    $query_string	   URI     ,  $args   ,   $query_string         
    $remote_addr           
    $remote_port               
    $remote_user        Auth Basic Module        
    $request_filename              URI    root   alias         
    $request_body     HTTP       ,      proxy_pass   fastcgi_pass     
    $request_body_file         HTTP               
    $request_completion              ,    “ok”。     ,       ,         ;              HTTP range              ,          。
    $request_method           HTTP       ,  GET、PUT、POST  
    $scheme       HTTP scheme,     https://nginx.com/    https
    $server_addr          
    $server_name          
    $server_port          
    $server_protocol                        ,  HTTP/1.1   HTTP/1.0
    

    nginx 로그 설정
    일 지 는 통계 오류 에 있어 서 매우 유리 하 다.로그 형식 logformat 명령 으로 정의 합 니 다.ngx_http_log_module 는 요청 로그 형식 을 정의 하 는 데 사 용 됩 니 다.
  • access_log 문법: accesslog path [format [buffer=size [flush=time]]]; 기본 값: accesslog logs/access.log combined;
  • log_format 명령 어 문법: logformat name string …; 기본 값: logformat combined "..." 는 apache 의 combined 로그 형식 에 해당 하 는 기본 적 인 combined 로그 형식 이 있 습 니 다. 다음 과 같 습 니 다: logformat combined ‘ remoteaddr− remote_user [ timelocal]′′“ request" status body_bytes_sent ' ' " httpreferer”“ http_user_agent” ‘; log_format proxy ‘http_x_forwarded_for -remote_user [ timelocal]′′" request” status body_bytes_sent ’ ’ “ httpreferer"" http_user_agent” ‘;
  • 로그 형식 변수 remoteaddr, http x forward for 클 라 이언 트 IP 주소 remoteuser 기록 클 라 이언 트 사용자 이름 request 기록 요청 URL 과 HTTP 프로 토 콜 status 기록 요청 상태 body bytes sent 가 클 라 이언 트 에 보 낸 바이트 수 는 응답 헤드 크기 를 포함 하지 않 습 니 다. 이 변 수 는 아파 치 모듈 mod log config 의 "% B" 와 같 습 니 다.인자 가 호 환 됩 니 다. bytessent 가 클 라 이언 트 에 보 내 는 총 바이트 수 입 니 다. connection 연결 의 시리 얼 번호 입 니 다. connection requests 는 현재 하나의 연결 을 통 해 요청 한 수량 입 니 다. msec 로그 기록 시간 입 니 다. 단 위 는 초 이 고 정밀 도 는 밀리초 입 니 다. pipe 요청 이 HTTP 흐름 선 (pipelined) 을 통 해 보 내 면 pipe 값 은 "p" 입 니 다. 그렇지 않 으 면 "입 니 다.. http refer 는 어느 페이지 링크 에서 방문 한 httpuseragent 가 클 라 이언 트 브 라 우 저 관련 정보 request length 요청 의 길 이 를 기록 합 니 다 (요청 줄, 요청 헤더, 요청 본문 포함). requesttime 요청 처리 시간, 단 위 는 초, 정밀도 밀리초 입 니 다. 클 라 이언 트 의 첫 번 째 바이트 부터 마지막 문 자 를 클 라 이언 트 에 보 낸 후 로 그 를 기록 할 때 까지 입 니 다. time iso 8601 ISO 8601 표준 형식의 로 컬 시간 입 니 다. $time local 일반 로그 형식의 로 컬 시간 입 니 다.
  • open log file cache 명령 문법: open log file cache max = N [inactive = time] [min uses = N] [valid = time]; open log file cache off; 기본 값: open log file cache off; 설정 세그먼트: http, server, location 은 모든 로그 기록 에 대해 먼저 파일 을 열 고 로 그 를 기록 한 다음 닫 습 니 다. open log file cache 를 사용 하여 로그 파일 저장 을 늦 출 수 있 습 니 다 (기본 값 은 off).형식 은 다음 과 같 습 니 다. 매개 변수 설명 은 다음 과 같 습 니 다. max: 캐 시 에 있 는 최대 파일 설명자 수 를 설정 합 니 다. 캐 시가 가득 차 면 LRU 알고리즘 을 사용 하여 설명 자 를 닫 습 니 다. inactive: 생존 시간 을 설정 합 니 다. 기본 값 은 10s min uses 입 니 다. inactive 시간 대 에 설정 합 니 다. 로그 파일 을 최소 몇 번 사용 한 후 이 로그 파일 설명 자 는 캐 시 에 기록 합 니 다. 기본 값 은 1 번 valid 입 니 다.검사 빈 도 를 설정 합 니 다. 기본 60s off: 캐 시 사용 안 함 인 스 턴 스 는 다음 과 같 습 니 다.
    open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
    
  • log not found 명령 문법: log not found on | off; 기본 값: log not found on; 설정 세그먼트: http, server, location 이 error log 에 존재 하지 않 는 오 류 를 기록 하 는 지 여부 입 니 다. 기본 값 은.
  • log subrequest 명령 문법: log subrequest on | off; 기본 값: log subrequest off; 설정 세그먼트: http, server, location 이 access log 에 하위 요청 한 방문 로 그 를 기록 할 지 여부 입 니 다. 기본 값 은 기록 되 지 않 습 니 다.
  • rewrite log 명령 은 ngx http rewrite module 모듈 에서 제공 합 니 다. 로 그 를 재 작성 하 는 데 사 용 됩 니 다. 디 버 깅 재 작성 규칙 에 대해 서 는 시작 을 권장 합 니 다. Nginx 재 작성 규칙 지침 문법: rewrite log on | off, 기본 값: rewrite log off, 설정 세그먼트: http, server, location, if 사용 시 error log 에 notice 단계 의 재 작성 로 그 를 기록 합 니 다.
  • error log 명령 문법: error log file | stderr | syslog: server = address [, parameter = value] [debug | info | notice | warn | error | crit | alert | emerg]; 기본 값: error log logs / error. log error; 설정 세그먼트: main, http, server, location 설정 오류 로그.
  • 후속
    나머지 부분 은 내일 계속 하 겠 습 니 다.

    좋은 웹페이지 즐겨찾기