Nginx 로고Nginx는 아파치 HTTPD를 위해 Igor Sysoev와 좋은 보충 쓰여진 고성능 웹 서버 및 우편물 프록시 서버, 시장 선두 주자가 이다. Nginx는 급속하게 그것을 결합하는 중요한 웹사이트를 가진 그것의 시장 점유율을 좋아한다 wordpress.com를 증가하고 있다. 6월 2008년 Netcraft 조사에서는 LiteSpeed는 이 조사 도중 nginx는 백만개의 위치 보다는 더 많은 것을 얻었는 그러나, 이상의 600천개의 위치를 잃었다; 수에서 두배로 하기 보다는 더 많은 것. WordPress blogging 체계는 상류 음식 단위를 사용하여 nginx로 최근에 초당 8-9 천개의 요구를 도움이 되어기 위하여 그것의 짐 밸런서 전부를, 개조했다. 우리는 너무 Nginx로 몇몇을의 우리의 웹사이트 이동하는 것을 결정했다. Nginx 형성을 위한 몇몇 근본적인 끝 그리고 일반 지침은 여기 있다. 이것은 문서 (rtfm)를 읽기를 위한 대용품이 아니다. 아래에 읽힐 그러나 당신이 독서와 nginx 문서를 재독할 후에도 막힐 때. 당신은 아래에 끝의 가치를 단지 그 때 이해할 것이다 :)

우리는 일반적인 윤곽 끝에 집중할 것이다 사실상 접대를 위해 뿐 아니라.

주: 사실상에서 당신을 접대해서 다수 웹사이트를 위해 동일한 IP 주소를 사용하십시오. 과 세 번째에 phpBB를 어쩌면 알고 있는지 누구가 다른 사람에 당신은 MODx가 있는지도 모르는 그러나, 각 웹사이트에는 거의 확실하게 당신은 wordpress가 있는 1개의 웹사이트에서 분리되는 당신을 추측하는 .htaccess (아파치 HTTPD 웹 서버에 처음에 접대되었다) 파일, 분리되는 루트 디렉토리 등등이 예를 들면 있을 것이다. 이 다른 .htaccess 지시는 전부 nginx 구성 파일에서 들어갈 필요가 있다.

당신이 고쳐 씀 규칙을 위한 다수 조건을 부과할 수 없다 Nginx에는 에서 고쳐 씀 규칙에 있는 중요한 제한이 있다. 다른 손에 아파치 HTTPD는 RewriteCond 다수 지시를 사용하여 좋은 해결책을 제공한다.

다른 손에 Nginx는 계산서 허용하는 경우에. 당신은 구획 고쳐 씀 규칙이 안에서 있을 수 있는 경우에. 그러나 구획 그들자신이 한정된 경우에. 당신은 단 하나에 또는 없 또는 다수 조건을 추가하지 않는 경우에 구획. 구획 또한 당신은 보금자리를 짓 수 없는 경우에. 게다가 그 외에 계산서가 없다. 그러나 당신은 정규식을 사용할 수 있다 그래서 뒤에 오는 것 가능하다:

만약에 ($request_method! ~ ^ (얻으십시오|머리) $) {
    반환 501;
}

그러나 당신은 2개의 가변을 한번에 검사할 수 없다. 특별히 사실상 접대 대본에서 제한은 showstoppers와 같은 수시로 감지될 수 있다. 그러나 나는 작은 여분의 것으로 당신을 당신의 특별한 필요를 봉사하기 위하여 생각하는 것이 혁신적인 해결책을 제공할 다는 것을 것을을 발견했다. 많은 wordpress를 포함하여 PHP에 근거한 웹 소프트웨어를 위한 예를 들면 아주 일반적인 .htaccess 규칙은:

위에 RewriteEngine
RewriteBase/
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteRule. /index.php [L]

밝힌다 index.php를 대신 비십시오 요구된 파일 이름이 출석하고 또한 전화번호부가 아닌 경우에.

그러나 RewriteCond가 최대 PHP에 근거하는 소프트웨어를 위해 동일의 동안 RewriteRule는 이지 않는다. phpBB를 위한 고쳐 씀 규칙의 예를 들면 부분은:

RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteCond % {REQUEST_FILENAME}! - l
RewriteRule ^ [a-z0-9_-] +? (p ([0-9] +) \ .html)? $ /viewforum.php? start=$2 [QSA, L, NC]

제 3 의 RewriteCond를 당분간 묵살하십시오. 그것은 또한 상징 연결을 검사한다. 당신이 볼 수 있던 대로 고쳐 씀 규칙은 다르다. 당신이 단 하나 IP 주소 (단 하나 서버)에 WordPress 그리고 phpBB 웹사이트를 둘 다 접대할 필요가 있고 가정하십시오. 첫번째 2개의 규칙이 일반적이기 때문에 당신은 쓴다 둘 다에 서버를 적용할 뒤에 오는 규칙을 할 수 있다:

파일, 전화번호부 또는 상징 연결인 경우에 #
만약에 (- e $request_filename) {
    틈;
}

이것은 이전 RewriteCond가 서버에 모든 웹사이트에 적용 가능한 하고 것과 같은 일을 한다 (당신을 추측하는 것은 서버 내의 그것을 두었다).

지금 당신은 당신의 개인적인 서버를 위한 분리되는 고쳐 씀 규칙이 있을 수 있다. 예를 들면 당신은 WordPress 당신의 블로그를 위해 이 규칙을 사용할 수 있다:

# 고쳐 씀은 blog.example.com를 위해 지배한다
만약에 ($host ~* ^blog \ .example \ .com$) {
    고쳐 씀 ^ (. *) $ /index.php? q=$1는 지속된다;
    틈;
}

틈은 조건이 수행되는 경우에 더 규칙이에 있는 모든 이전 계산서 후에 가공되지 않는다는 것을 보증하기 위한 것이다.

마지막은 고쳐 씀 규칙이 어울릴 때 더 고쳐 씀 규칙이 수행되지 않는다는 것을 보증한다.

나는 사실상 접대에 비중을 두고 3개의 기사를 최근에 썼다:

  1. 사실상 접대 없이에 phpBB를 Nginx를 가진/달리는 방법
  2. Nginx: 내부 뿐만 아니라 전화번호부 해결책 문제점을 고치는 사실상 접대에서 방법 방향을 바꾼다
  3. 사실상 접대를 위한 Nginx를 형성하는 방법

몇몇 끝을 더 장을 완료하기 위하여 추가하자, 우리는 하기로 하는가?

파일을 맨먼저 막는 방법. (.htaccess 같이) Nginx에서 전망에서?

정상의 가까이에 당신의 서버 구획 내의 이것을 추가하십시오:

위치 ~/\. {
    모두를 부정하십시오;
}

이것은 이름을 가진 파일을 위한 모든 외부 요구를 맨먼저 거절할 것이다. (점).

비 www 이체에 www URL의 방향을 바꾸는 방법?

예를 들면 여기 당신이 http://example.com/yourpage에 http://www.example.com/yourpage 같이 모든 요구의 방향을 바꿀 수 있는 방법 있다:

만약에 ($host ~* ^www \. (. *)) {
    $host_without_www $1를 놓으십시오;
    ^를 다시 쓰십시오 (. *) $ http://$host_without_www$1 영구 불변; # $1는 "/yourpage"를, 'www.example.net/yourpage' 아닙니다 포함한다
}

주: 이 보기는 그들의 웹사이트에서 이다

Nginx로 아파치 HTTPD 고쳐 씀 규칙을 개조하는 방법 규칙을 다시 쓰는가?

나는 기사의 위 그리고에서 몇몇 뉘앙스를 토론했다. 나가 주어서 좋은 단 하나 가장 큰 요령은 Nginx에서 처음부터 내리침을 가진 요구 uri와 어울리는 그러나, RewriteRule에 있는 정규식이 a 없이/처음부터 요구 URI와 일치하는 아파치 HTTPD에서 그것 있다. 이것과 같은 이렇게 예를 들면 아파치 HTTPD 고쳐 씀 규칙:

RewriteRule ^ [a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3 [QSA, L, NC]

nginx에서 이것은 된다:

고쳐 씀 ^/[a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3는 지속된다;

간단한, 그렇지?

주: RewriteCond는 상기 설명한 바와같이를 사용하여 지시 실행될 필요가 있는 경우에.

심상/정체되는 파일 벌채 중지하는 방법?
심상/정체되는 파일을 위해 만기일을 지정하는 방법?

# 직접 서브 정체되는 파일
위치 ~* ^.+. (도트 JPG|jpeg|gif|css|png|js|ico|html) $ {
    access_log        떨어져;
    만료된다           30d;
}

우리의 공개토론에 있는 이 기사에 관하여 토론하게 자유롭게 느끼십시오.

PS. 만일 당신이 소프트웨어를 끊거나 악의 있는 목적을 위해 사용하기에 관하여 거칠게 자르기 이지 않으면 생각해 보면 (부수는 것은 이다). 거칠게 자르는 것은 친밀한 세부사항에 있는 주제를 알고 있기에 관하여 이다. 불행히도 인쇄하 매체 신문인은 거칠게 자르고 부수기 사이에서 수시로 혼동하고 악명을 거칠게 자르기 주다 것이.

PPS. 나가 아직 탐구하지 않은 무엇을 nginx와 아파치 HTTPD의 성과 차이이다. 나는 그것에 나중에 새롭게 할 것이다.