Nginx 경로 매 칭 규칙 및 각종 장면 인 스 턴 스

15287 단어 Nginx
1. nginx 설정 파일 에서 location 설정 경로 전송 규칙 을 통 해 문법 을 설정 합 니 다.
location [=||*|^~] /uri/ { # … }
중 괄호 는 경로 가 일치 하 는 기호 입 니 다. 흔히 볼 수 있 는 것 은:
1  =:    
2  ^~3  ~4  ~*5  /uri:      
6  /

정확 한 일치
정확 한 일치 사용 = nginx 가 경로 가 일치 할 때 가장 높 은 우선 순위 가 있 음 을 표시 합 니 다. 정확 한 일치 에 성공 하면 nginx 는 일치 하 는 항목 설정 인 스 턴 스 location = / test {...} 에 대한 검색 을 중단 합 니 다.
정확 한 접두사 일치
정확 한 접두사 가 일치 하 는 우선 순 위 는 정확 한 일치 에 버 금 가 는 것 입 니 다. nginx 는 정확 한 접두사 가 일치 하 는 것 을 요청 한 후 일치 하 는 항목 설정 인 스 턴 스 location ^ ~ / test 에 대한 다른 검색 을 중단 합 니 다.a { … }
정규 일치
정규 매 칭 은 대소 문자 구분 과 대소 문자 구분 없 는 두 가지 로 나 뉘 는데 각각 ~ 와 ~ * 로 표시 합 니 다.정확 한 일치 와 정확 한 접두사 일치 요청 이 실 패 했 습 니 다. 관련 정규 일치 location 을 설정 하면 nginx 는 이 요청 을 정규 일치 시 키 려 고 시도 합 니 다.설명 할 것 은 정규 일치 사이 에 우선 순위 가 없 는 것 이 아니 라 설정 파일 에 나타 난 순서대로 일치 하 는 것 입 니 다. 이전 과 일치 하면 설정 인 스 턴 스 # 1 location ~ / test 를 아래로 계속 검색 하지 않 습 니 다.a { … }
# 2 location ~ * / test 설정A { … }
요청 / testa / hello 에 서 는 설정 1 처리 에 일치 합 니 다. / testA / hello 는 설정 2 에 일치 합 니 다.
일반 접두사 일치
일반 접 두 사 는 앞 에 수정자 가 없습니다. location 뒤에 일치 하 는 uri 를 직접 쓰 십시오. 정규 설정 인 스 턴 스 location / img {...} 에 버 금 가 는 우선 순위 입 니 다.
공통 일치
유 니 버 설 매 칭 은 모든 요청 과 일치 할 수 있 습 니 다. 일반 nginx 설정 파일 은 마지막 에 유 니 버 설 매 칭 규칙 이 있 습 니 다. 다른 매 칭 규칙 이 모두 효력 을 잃 었 을 때 요청 은 유 니 버 설 매 칭 규칙 에 의 해 처 리 됩 니 다.일반적인 매 칭 을 설정 하지 않 고 다른 모든 매 칭 규칙 이 실 효 될 경우 nginx 는 404 오류 설정 인 스 턴 스 location / {...} 을 되 돌려 줍 니 다.
전체 예 참조
nginx 경로 규칙 설정: location = / {echo "규칙 A";} location = / login {echo "규칙 B";} location ^ ~ / static / {echo "규칙 C";} location ^ ~ / static / files {echo "규칙 X";} location ~. (gif | jpg | png | js | css) ${echo "규칙 D";} location ~ *. png ${echo "규칙 E";} location / img {echo "규칙 Y";}location / {echo "규칙 F";}
uri 일치 경로 규칙 요청
http://localhost/   A
http://localhost/login   B
http://localhost/register   F
http://localhost/static/a.html   C
http://localhost/static/files/a.txt   X
http://localhost/a.png   D
http://localhost/a.PNG   E
http://localhost/img/a.gif   D
http://localhost/img/a.tiff   Y

이상 은 nginx 경로 가 일치 하 는 규칙 에 대한 대략적인 정리 와 요약 입 니 다.
2. 각종 장면 의 실례:
# 1、        
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  127.0.0.1;

        # charset koi8-r;
        location / {
            root   html;
            index  index.html index.htm;
        }
        #       
		location /drink {
	   		alias D:\apk\drink;
           	autoindex on;
	   		allow all;
           autoindex_exact_size on;
           autoindex_localtime on;
        }

        # 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;
        }
    }
}
# 2、  ssl  +        +    
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8055;
		listen       14430 ssl;
		#   ssl   start
        server_name  ****.nxycsw.cn;

        ssl_certificate      D:/workspace/human_drink_yanqing/nginx-1.16.1/cert/ssl.pem;
        ssl_certificate_key  D:/workspace/human_drink_yanqing/nginx-1.16.1/cert/ssl.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
		#   ssl   end
		
		#        start
		location / {
			root   D:/workspace/human_drink_yanqing/nginx-1.16.1/html/docs/dist;
            index  index.html index.htm after.html front.html mobile.html;
        }
		#        end
		
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		
		#        start
		location /api {
		   # rewrite  ^.+api/?(.*)$ /$1 break;
		   include  uwsgi_params;
		   proxy_pass   http://127.0.0.1:8056/api; #            
		   allow all;
           autoindex_exact_size on;
           autoindex_localtime on;
		   proxy_buffering off;
		}
		#        end
    }
}
# 3、    
worker_processes 2;

events {
    worker_connections  1024;
}

stream {
	#     
    upstream api {
                server 127.0.0.1:19001 weight=10;
                server 127.0.0.1:19002 weight=10;
                server 127.0.0.1:19003 weight=10;
                server 127.0.0.1:19004 weight=10;
    }

	#          
    server {
        listen 8084;  #     
        proxy_connect_timeout 300s;
        proxy_timeout 700s;
        proxy_pass api;
    }
}

좋은 웹페이지 즐겨찾기