Development/Nginx

#5 재작성에 관한 모든 것(2)

ggang9 2014. 2. 3. 23:30

1. 서비스 운용 중 유지보수 페이지 서비스

 - nginx의 제일 맘에 드는 점은 서비스를 종료할 필요 없이 reload 시킬수 있다는 점이다. 소스 배포등을 위해서 임시로 사이트를 임시페이지로 돌릴경우 간단하게 작업이 가능하다. 배포를 위해 원래는 설정파일을 정적인 임시파일 html등으로 보이도록 생성해 두고 해당 임시 파일로 설정값을 변경한뒤에 nginx 서비스는 재시작 하면 된다. 배포 완료 뒤에는 백업해둔 원래 설정 파일로 변경하고 다시 reload 시켜 두면 된다.


2. 아파치 .htaccess를 nginx 재작성으로 변환

 - 세계적으로 가장 많이 사용되고 있는 apache2의 환경설정을 nginx용으로 변환할 수 있다.


apache 

nginx 

유의 사항 

 RewriteCond %{SERVER_PORT} 80

 if ( $server_port ~ "80" ) {

    set $rule_0 1$rule_0;

}

 서버 포트를 체크하는 간단한 조건부 재작성이다. 

 RewriteCond %{REQUEST_URI} ^/signup/? 

 if ( $uri ~ "^/signup/?" ) {

    set $rule_0 2$rule_0;

 } 

 URL 구조를 체크한다. 

 RewriteRule ^(.*)$ https://www.ggang9.com/$1 [R,L] 

 if ( $rule_0 = "21" ) {

    rewrite ^/(.*)$ https://ggang9.com/$1 redirect;

    break;

 }

 위의 두 조건이 충족될때만 적용되는 규칙이다. 아파치 환경설정에서는 R에의 기술된 리다이렉트이고, nginx에서는 그냥 리다이렉트이다. 

 RewriteRule ^signup/(A-Za-z)+)/?$ /signup/index.php?account_rype$1 [NC,L]

 rewrite ^/signup/(A-Za-z)+)/?$ /signup/index.php?account_type=$1 last;

 /signup/something과 매치되는 URL을 찾아서 /signup/index.php?account_type=something으로 재작성한다. 이때 something은 임의의 알파벳을 포함할수 있다. (A-Za-z) 

 RewriteRule ^home/(09]+/?$ /home.php?home_id=$1 [NC,L] 

 rewrite ^/home/([09]+)/?$ /home/index.php?home_id=$1 last;

 매칭 대상이 알파벳이 아닌 숫자인것만 제외 하면 위의 규칙과 동일하다. 

 RewriteRule ^homes/(09]+/?$ /home.php?home_id=$1 [NC,L] 

 rewrite ^/homes/([09]+)/?$ /home/index.php?home_id=$1 last;

 homes -> home으로 재작성시켜 준다. 


해당 변환을 직접해주는 사이트가 있지만 결론적으로는 직접 변환하는게 안전하다.


3. 맵을 이용한 간결한 환결 설정

 - 맵모듈을 이용하여 간단하게 일련의 값들을 다른 값으로 분류해서 변수에 저장하여 사용할 수 있다. 

아래 예제에서는 특정 호스트명을 체크해서 그 도메인과 서브도메인에 따라 다른일을 하도록 작성할수 있다.


map $http_host $name {
	hostnames;
	default			0;
	ggang9.com		1;
	*.ggang9.com	2;
	test.com			2;
	*.test.com		2;
	.site.com		3;
}

if ($name ~* 1 ) {
	<재작성 규칙들>
}


 - 위의 예제에서는 $http_host 라는 변수를 설정하여 맵을 하나 생성하고 각각에 대응되는 값을 $name 변수에 포함시키는게 전부이다. 




엔진엑스로 운용하는 효율적인 웹사이트

저자
디판카 사카 지음
출판사
에이콘출판 | 2013-03-22 출간
카테고리
컴퓨터/IT
책소개
아파치를 대체하고 있는 강력한 웹서버 엔진엑스(Nginx)의 실...
가격비교