ngx rewrite 방법 으로 ngx conf 파일 간소화
그동안 rewrite 에 대한 이 해 는 감성 적 인 url 재 작성 차원 에 머 물 렀 고 왜 재 작성 을 해 야 하 는 지 에 대해 서 는 깨 닫 지 못 했다.다음은 최근 프로젝트 시간 과 결합 하여 rewrite 에 대한 인식 을 이야기 하 겠 습 니 다.
1. rest 화 된 url 에 대한 요청 방식 rewrite
e.g
RESTFUL uri——
http://example.com/user/$uid/photo
필요:
요청 모드
기대 처리
GET
어떤 사진 의 정 보 를 가 져 옵 니 다.
POST
사진 추가
PUT
사진 정보 업데이트
DELETE
사진 삭제
상기 수요 에 대하 여 rewrite 로 처리 하여 실현 할 수 있 습 니 다.
서로 다른 업무 요청 방식 은 서로 다른 백 엔 드 처리 논리 에 반영 할 수 있다.
server{
server_name example.com ;
if ( $request_method = GET ){
rewrite ^(/user/(.*)/photo)$ index.php?do=get_photo&uid=$2 break;
}
if ( $request_method = POST ){
rewrite ^(/user/(.*)/photo)$ index.php?do=add_photo&uid=$2 break;
}
if ( $request_method = PUT ){
rewrite ^(/user/(.*)/photo)$ index.php?do=update_photo&uid=$2 break;
}
if ( $request_method = DELETE ){
rewrite ^(/user/(.*)/photo)$ index.php?do=del_photo&uid=$2 break;
}
}
2. 금 옥 그 밖의 '망 가 진 솜' 중
전단 에 우아 한 url 을 보 여주 기 위해 rewrite 를 이용 하여 url 에서 필요 한 매개 변 수 를 분석 하여 백 엔 드 논리 에 투사 하여 처리 합 니 다.
3. "깔때기" 식 백 스테이지 처리
서로 다른 전단 url 은 rewrite 를 기반 으로 백 엔 드 처리 입 구 를 통일 합 니 다.예 를 들 어 설명:
그림 이 보 여 주 는 두 가지 url:
url
설명 하 다.
http://example.com/([^/]*).jpg
그림 시스템 저장 기본 생 성 url
http://example.com/d/(.*)
그림 시스템 은 사용자 정의 url 을 지원 합 니 다.
반찬 의 초기 nginx 규칙 은:
location ~ ^/d/(.*)$ {
root ${SRC_ROOT}/apps/fnt ;
expires max;
fastcgi_cache cache_php;
set $PREFIX "";
if ( $request_method = HEAD ) {
set $PREFIX "HEAD_";
}
fastcgi_cache_key $PREFIX$1;
fastcgi_cache_valid 200 302 3d;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
tcp_nodelay on;
include fastcgi_params ;
fastcgi_pass 127.0.0.1:${CGI_PORT};
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME ${SRC_ROOT}/apps/fnt/index.php ;
fastcgi_param QUERY_STRING do=d&path=$1 ;
client_max_body_size 100m;
fastcgi_connect_timeout 1000s;
fastcgi_send_timeout 1000s;
fastcgi_read_timeout 1000s;
}
location ~ ^/([^/]*)\.(jpg|png|bmp|gif)$ {
root ${SRC_ROOT}/apps/fnt ;
expires max;
fastcgi_cache cache_php;
set $PREFIX "";
if ( $request_method = HEAD ) {
set $PREFIX "HEAD_";
}
fastcgi_cache_key $PREFIX$1;
fastcgi_cache_valid 200 302 3d;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
include fastcgi_params ;
fastcgi_pass 127.0.0.1:${CGI_PORT};
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME ${SRC_ROOT}/apps/fnt/index.php ;
fastcgi_param QUERY_STRING key=$1&postfix=$2 ;
client_max_body_size 100m;
fastcgi_connect_timeout 1000s;
fastcgi_send_timeout 1000s;
fastcgi_read_timeout 1000s;
}
눈 썰 미가 있 는 사람 은 한눈 에 알 아 볼 수 있 지만, 속 의 번 거 로 움 을 알 수 있다.
스승 의 지도 아래 rewrite 를 이용 하여 다음 과 같이 수정 합 니 다.
location ~* ^/([^/]*)\.(jpg|png|bmp|gif)$ {
rewrite ^/([^/]*)\.(jpg|png|bmp|gif)$ /backend/?key=$1&postfix=$2 last;
}
location ~ ^/d/(.*)$ {
rewrite ^/d/(.*)$ /backend/?path=$1&do=d
}
location = /backend/ {
internal;
root ${SRC_ROOT}/apps/fnt ;
set $key $arg_path;
if ( $key = "" ){
set $key $arg_key;
}
expires max;
fastcgi_cache cache_php;
set $PREFIX "";
if ( $request_method = HEAD ){
set $PREFIX "HEAD_";
}
fastcgi_cache_key $PREFIX$1;
fastcgi_cache_valid 200 302 3d;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
include fastcgi_params ;
fastcgi_pass 127.0.0.1:${CGI_PORT};
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME ${SRC_ROOT}/apps/fnt/index.php ;
fastcgi_param QUERY_STRING $query_string;
client_max_body_size 100m;
fastcgi_connect_timeout 1000s;
fastcgi_send_timeout 1000s;
fastcgi_read_timeout 1000s;
}
많이 상 큼 해 졌 죠?나무 있어?!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.