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; } }
위치에 따른 루트와 별칭의 차이:
예:
클라이언트 요청: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!