Nginx의 Location 지시어는 NginxHttpCoreModule의 중요한 지시어입니다. Location 지시문은 일치하는 URI를 구성하는 데 사용됩니다. URI는 구문에서 "/uri/"이며 문자열 또는 정규식일 수 있습니다. 하지만 정규식을 사용하려면 접두사를 지정해야 합니다.
nginx 위치 구문
기본 구문: 위치 [=|~|~*|^~] /uri/ { … }
= 엄격한 일치. 이 쿼리가 일치하면 검색이 중지되고 요청이 즉시 처리됩니다.
~ 대소문자 구분 일치(정규식 사용 가능)
~* 대소문자 구분 없음 일치(정규식 사용 가능)
!~ 및 !~* 대소문자 구분 비일치 및 비일치 각각 대소문자 구분 불일치
^~ 일반 문자열과 함께 사용하는 경우 경로가 일치하면 정규식을 테스트하지 않도록 nginx에 지시합니다.
위치 구문: location [=|~|~*|^~] /uri/ { … }
참고:
1, ~는 대소문자를 구분하여 일치합니다.
2, ~ * 대소문자를 구분하지 않는 일치
3, !~ 및 !~*는 각각 대소문자를 구분하지 않는 불일치 및 대소문자를 구분하지 않는 불일치
예 1:
위치 / { }
은 모든 요청이 /로 시작하므로 모든 쿼리와 일치합니다. 그러나 쿼리 일치에서는 정규식 규칙이 우선적으로 적용됩니다.
예 2:
일치만/
예 3:
코드는 다음과 같습니다 |
코드 복사 |
위치 ~ * .(gif|jpg|jpeg)$ {
代码如下 |
复制代码 |
location ~* .(gif|jpg|jpeg)$ { rewrite .(gif|jpg)$ /logo.png; } |
다시 작성 .(gif|jpg)$ /logo.png;}
|
참고: 대소문자를 구분하지 않으며 gif, jpg, jpeg
nginx 위치 적용 예
代码如下 |
复制代码 |
location = / { # 只匹配 / 查询。 }location / { # 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。 }location ^~ /images/ { # 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。 }location ~* .(gif|jpg|jpeg)$ { # 匹配任何已 gif、jpg 或 jpeg 结尾的请求。 }location ~* .(gif|jpg|swf)$ { valid_referers none blocked start.igrow.cn sta.igrow.cn; if ($invalid_referer) { #防盗链 rewrite ^/ http://$host/logo.png; } } location ~* .(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { #根据文件类型设置过期时间 expires 1h; break; } } location ~* .(txt|doc)${ #禁止访问某个目录 root /data/www/wwwroot/linuxtone/test; deny all; } |
코드는 다음과 같습니다 | 코드 복사
location = / { # 오직 일치/쿼리. }location / { # 모든 요청은 /로 시작하므로 모든 쿼리와 일치합니다. 그러나 정규식 규칙과 긴 블록 규칙은 우선 순위가 지정되어 쿼리와 일치됩니다. }location ^~ /images/ { # /images/로 시작하는 쿼리를 일치시키고 검색을 중지합니다. 정규식은 테스트되지 않습니다. }location ~* .(gif|jpg|jpeg)$ { # gif, jpg 또는 jpeg로 끝나는 요청을 일치시킵니다. }위치 ~* .(gif|jpg|swf)$ { valid_referers 없음 차단됨 start.igrow.cn sta.igrow.cn; if ($invalid_referer) { # 핫링크 방지 재작성 ^/ http://$host/logo.png; } } 위치 ~* .(js|css|jpg|jpeg|gif|png|swf) $ { if (-f $request_filename) { #파일 형식에 따라 만료 시간 설정 1시간 만료; break; } }위치 ~ * .(txt |doc)${ #특정 디렉토리에 접근 불가 root /data/www/wwwroot/linuxtone/test; 모두 거부; } |
++ 사용 가능한 일부 전역 변수$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_string$scheme$server_protocol$server_addr$server_name$server_port$uri
위 내용은 관련 내용을 포함하여 nginx 위치 구성 지침을 소개한 내용이므로 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.