작은숲:위키노트/Nginx 미디어위키 설정

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

Nginx에서는 아파치와 달리 .htaccess 파일을 쓸 수 없기 때문에 필요한 설정을 모두 server 블럭에서 처리해야 한다. 특히 짧은 주소 방식을 쓰려면 location 지시자를 써서 Nginx에게 우리가 원하는 것을 알려줘야 한다.

location = / {
    rewrite ^ /wiki/ break;
}location ^~ /w/ {
    try_files $uri @mediawiki;
}location @mediawiki {
    rewrite ^/w/(.*)$   /wiki/index.php?titles=$1&args;
}location ^~ ^/wiki/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
    access_log off;
    log_not_found off;
    deny all;
}location ^~ ^/wiki/(docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {
    internal;
}

위 설정에서는 미디어위키가 루트 디렉토리 아래 wiki 디렉토리에 설치되어 있고, 짧은 주소를 쓸 때는 /w/미디어위키와 같은 형태로 쓰고자 한다.

  1. 첫 번째 location 블럭은 도메인네임으로만 접속한 경우 미디어위키가 설치된 디렉토리로 보내주는 것이다.
  2. 두 번째 location 블럭은 짧은 주소의 형태로 접속한 경우 이를 처리하기 위한 설정이다.
  3. 세 번째 location 블럭에서는 실제로 rewrite 지시자를 써서 짧은 주소 형태의 주소를 제대로 처리하도록 한다.
  4. 네 번째 location 블럭은 외부에서 접근하지 못하게 할 미디어위키의 디렉토리를 보호한다.
  5. 다섯 번째 location 블럭은 미디어위키 소프트웨어 내부에서 사용할 수도 있는 디렉토리를 설정한다.

이와 같이 웹 서버Nginx를 쓰는 경우에는 아파치.htaccess 파일에서 했던 설정을 location 지시자를 써서 직접 설정해줘야 한다.

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/Nginx 미디어위키 설정 문서입니다.