>운영 및 유지보수 >엔진스 >nginx 여러 위치를 구성하는 방법

nginx 여러 위치를 구성하는 방법

王林
王林앞으로
2023-05-17 22:25:452614검색

머리말

nginx 서버에서 여러 위치를 구성하면 서로 다른 경로 일치에 따라 서로 다른 처리가 수행됩니다.

nginx에서는 일반적으로 사용되는 정규 표현식

문법 규칙: 위치 [=|~|~*|^~] /uri/ { … }

  • = 시작은 정확히 일치함을 의미합니다.

  • ^~ 시작은 대소문자를 구분하며 무언가로 시작한다는 의미입니다.

  • ~ 시작은 대소문자를 구분하는 일반 일치를 의미합니다.

  • ~*의 시작은 대소문자를 구분하지 않는 일반 일치를 의미합니다.

  • !~ 및 !~*는 각각 대소문자 구분 비일치 및 대소문자 구분 비일치 일반 일치를 나타냅니다.

  • / 의미: 보편적 일치, 모든 요청이 일치됩니다.

여러 위치 구성의 경우 일치 순서는 다음과 같습니다(확인되지 ​​않음).

첫 번째 일치 =, 두 번째로 일치 ^~, 두 번째로 파일에 있는 순서대로 일반 일치, 마지막으로 에게 넘겨줍니다. / 유니버셜 매칭 . 일치가 성공하면 일치가 중지되고 현재 일치 규칙에 따라 요청이 처리됩니다.

실제 측정

server {
    listen       80;
    listen  [::]:80;
    server_name  location.test.com;

    access_log  /var/log/nginx/location.host.access.log  main;

    #*********************注意多个location通常按精确的放前面,模糊大范围的放后面,nginx先找= ******************************
    location = /login.html {#精确匹配 /login
	root /usr/share/nginx/html/test-equal;#请求/login.html相当于寻找资源/usr/share/nginx/html/test-equal/login.html
    }
    location ^~ /prefix/ {#区分大小写且以/prefix/开头
	root /usr/share/nginx/html/test-prefix;#root代表根目录,请求/prefix/prefix.html相当于寻找资源/usr/share/nginx/html/test-prefix/prefix/prefix.html 
    }
    location ~ \.(png|jpg)$ {#不区分大小写且以.png或.jpg结尾
	root /usr/share/nginx/html/test-suffix;#请求/suffix/a.png相当于寻找资源/usr/share/nginx/html/test-suffix/suffix/a.png
    }
    location ^~ /jd/ {# 区分大小写且以/jd/开头
	proxy_pass https://www.jd.com/;#proxy_pass  此处的url以/结尾,则nginx会取掉location部分再转发,例如,请求/jd/电器?name=1 则会转发到https://www.jd.com/电器?name=1
    }
    location ^~ /s {# /会匹配到所有的
	proxy_pass https://www.baidu.com;#proxy_pass  此处的url没有以/结尾,则匹配到的地址全部拼接到代理后的地址,例如,请求/s?name=1 则会转发到https://www.baidu.com/s?name=1
    }
    location  / {# 会返回index.html
	root /usr/share/nginx/html;
	index index.html;	
    }  
}

Remarks

위치에 따른 루트와 별칭의 차이:

예:

클라이언트 요청: http://localhost:8080/user/info/a.txt

nginx로 구성된 경우 루트: nginx는 리소스를 찾습니다: /home/html/user/info/a.txt

location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->
root /home/html;#此处可以不以/结尾
}

nginx 별칭으로 구성된 경우: nginx는 리소스를 찾습니다: /home/html/info/a.txt

location ^~ /user {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->
alias /home/html/;#此处以/结尾
}

위 내용은 nginx 여러 위치를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제