다시 쓰기 구성을 올바르게 격리하는 방법은 없습니다. 취할 수있는 세 가지 접근 방식이 있습니다.
지도 모듈 포함
지도 모듈은 별도의 파일에서 매핑을 포함 할 수 있습니다. 파일을 변경 한 후에도 Nginx를 다시로드해야하며 매핑 파일이 구문 상 정확해야하지만 수행 할 수있는 작업이 제한됩니다.
nginx.conf
:
map $uri $new {
include /etc/nginx/marketing.map;
}
server {
...
if ($new) {
rewrite ^ $new redirect;
}
...
}
marketing.map
:
/about /company/about-us;
~^/people/(?<person>.*)$ /company/people/$person;
전처리 구성
첫 번째는 리디렉션을 사용자가 정의한 형식에서 nginx 구성으로 변환하는 스크립트를 작성하는 것입니다. 예를 들어, 공백으로 구분 된 리디렉션 목록이 제공된 경우 :
/foo/(.*) /bar/$1
그리고 스크립트 :
#!/bin/sh
while read SOURCE DEST; do
echo "rewrite $SOURCE $DEST permanent;"
done < redirects.txt > redirects.conf
다음 구성을 구성하십시오.
rewrite /foo/(.*) /bar/$1 permanent;
그런 다음 nginx -t
전체 구성 에서 실행 하여 다시로드하기 전에 구성이 유효한지 확인하려고합니다.
즉각적인 처리
두 번째 옵션은 ngx_lua , ngx_perl 또는 ngx_js 를 사용하여 nginx 자체에서 리디렉션 구성을 읽고 처리하는 것입니다. 예를 들어, rewrite_by_lua
지시문을 사용하면 Lua 코드를 실행 하여 재 작성을 구성 할 수 있습니다 . 모든 요청에 대한 코드를 해석하므로 사전 성능에주의해야합니다.