nginx 에서 location 문법 안내

4583 단어 nginxlocationLinux
문법 규칙:  location [=|~|~*|^~] /uri/ { … }
  • =  시작 부분 은 정확 한 일치
  • 를 나타 낸다.
  • ^~  시작 은 uri 가 일반적인 문자열 로 시작 하여 url 경로 와 일치 하 는 것 으로 이해 하면 됩 니 다.nginx 는 url 에 인 코딩 을 하지 않 기 때문에 / static / 20% / aa 로 요청 합 니 다. 규칙 ^ ~ / static / / aa 에 일치 할 수 있 습 니 다 (빈 칸 주의).
  • ~  시작 부분 은 대소 문 자 를 구분 하 는 정규 일치
  • 를 나타 낸다.
  • ~*  대소 문 자 를 구분 하지 않 는 정규 일치
  • !~!~* 는 각각 대소 문자 의 일치 하지 않 음 과 대소 문자 의 일치 하지 않 음 을 구분 하 는 정규
  • 이다.
  • /  일반적인 일치, 모든 요청 이 일치 합 니 다.

  • 여러 location 설정 의 경우 일치 하 는 순 서 는 (참고 자료 에서 왔 습 니 다. 아직 실제 검증 되 지 않 았 습 니 다. 해 보면 알 수 있 습 니 다. 구 애 받 지 않 고 참고 만 하 십시오) 입 니 다.
    우선 일치 =, 그 다음 일치 ^ ~, 그 다음은 파일 의 순서 에 따라 정규 일치, 마지막 으로 전달 / 통용 일치.일치 가 성공 하면 일치 하지 않 고 현재 일치 하 는 규칙 에 따라 요청 을 처리 합 니 다.
    예, 다음 과 같은 일치 규칙 이 있 습 니 다.
    location = / {
       #  A
    }
    location = /login {
       #  B
    }
    location ^~ /static/ {
       #  C
    }
    location ~ \.(gif|jpg|png|js|css)$ {
       #  D
    }
    location ~* \.png$ {
       #  E
    }
    location !~ \.xhtml$ {
       #  F
    }
    location !~* \.xhtml$ {
       #  G
    }
    location / {
       #  H
    }

    그러면 발생 하 는 효 과 는 다음 과 같다.
    루트 디 렉 터 리 /, 예 를 들 어http://localhost/ 일치 하 는 규칙 A
    방문 하 다.http://localhost/login 일치 하 는 규칙 B 를,http://localhost/register 일치 하 는 규칙 H
    방문 하 다.http://localhost/static/a.html 일치 하 는 규칙 C
    방문 하 다.http://localhost/a.gif, http://localhost/b.jpg 규칙 D 와 규칙 E 가 일치 하지만 규칙 D 순서 가 우선 이 고 규칙 E 가 작 동 하지 않 습 니 다.http://localhost/static/c.png 규칙 C 에 우선 일치
    방문 하 다.http://localhost/a.PNG 규칙 E 는 대소 문 자 를 구분 하지 않 기 때문에 규칙 D 와 일치 하지 않 습 니 다.
    방문 하 다.http://localhost/a.xhtml 규칙 F 와 규칙 G 가 일치 하지 않 습 니 다.http://localhost/a.XHTML대소 문 자 를 구분 하지 않 기 때문에 규칙 G 와 일치 하지 않 습 니 다.규칙 F, 규칙 G 는 배제 법 에 속 하고 일치 하 는 규칙 에 부합 되 지만 일치 하지 않 기 때문에 실제 응용 에서 어디 에 사용 되 는 지 생각해 보 세 요.
    방문 하 다.http://localhost/category/id/1111 마지막 으로 규칙 H 에 일치 합 니 다. 상기 규칙 이 일치 하지 않 기 때문에 이 때 는 nginx 리 트 윗 요청 이 백 엔 드 응용 서버 에 있어 야 합 니 다. 예 를 들 어 FastCGI (phop), tomcat (jsp), nginx 는 방향 프 록 시 서버 로 존재 합 니 다.
    그래서 실제 사용 에서 개인 은 적어도 세 개의 일치 규칙 정의 가 있다 고 생각 합 니 다. 다음 과 같 습 니 다.
    #       ,              ,         ,     。
    #                ,          
    #        
    location = / {
        proxy_pass http://tomcat:8080/index
    }
    
    #                 ,  nginx  http      
    #        ,         ,         
    location ^~ /static/ {
        root /webroot/static/;
    }
    location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
        root /webroot/res/;
    }
    
    #           ,                
    #               ,        
    #            , .php,.jsp        
    
    location / {
        proxy_pass http://tomcat:8080/
    }

    nginx 의 기타 설정 정보 소개
    3. ReWrite 문법last  – 기본적으로 모두 이 깃발 을 사용한다.break  – Rewirte 를 중지 하고 계속 일치 하지 않 음 redirect – 임시 재 설정 HTTP 상태 302 permanent 되 돌리 기 – 영구적 으로 방향 을 바 꾸 는 HTTP 상태 301 을 되 돌려 줍 니 다.
    1. 다음은 판단 할 수 있 는 표현 식 입 니 다.-f!-f 파일 존재 여 부 를 판단 하 는 데 사용 -d!-d 파일 존재 여 부 를 판단 하 는 데 사용 -e, !-e 파일 실행 여 부 를 판단 하 는 데 사용 -x2. 다음은 판단 할 수 있 는 전역 변수 입 니 다.
    예:http://localhost:88/test1/test2/test.php
    $host:localhost
    $server_port:88
    $request_uri:http://localhost:88/test1/test2/test.php
    $document_uri:/test1/test2/test.php
    $document_root:D:
    ginx/html $request_filename:D:
    ginx/html/test1/test2/test.php

    4. Redirect 문법
    server {
        listen 80;
        server_name start.igrow.cn;
        index index.html index.php;
        root html;
        if ($http_host !~ "^star\.igrow\.cn$" {
            rewrite ^(.*) http://star.igrow.cn$1 redirect;
        }
    }

    5. 도 난 방지 체인
    location ~* \.(gif|jpg|swf)$ {
        valid_referers none blocked start.igrow.cn sta.igrow.cn;
        if ($invalid_referer) {
            rewrite ^/ http://$host/logo.png;
        }
    }

    6. 파일 형식 에 따라 만 료 시간 설정
    location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
        if (-f $request_filename) {
            expires 1h;
            break;
        }
    }

    7. 특정한 디 렉 터 리 에 접근 하 는 것 을 금지 합 니 다.
    location ~* \.(txt|doc)${
    root /data/www/wwwroot/linuxtone/test;
    deny all;
    }

    첨부: 사용 가능 한 전역 변수
    $args
    $content_length
    $content_type
    $document_root
    $document_uri
    $host
    $http_user_agent
    $http_cookie
    $limit_rate
    $request_body_file
    $request_method
    $remote_addr
    $remote_port
    $remote_user
    $request_filename
    $request_uri
    $query

    전송 주소: http://outofmemory.cn/code-snippet/742/nginx-location-configuration-xiangxi-explain

    좋은 웹페이지 즐겨찾기