Nginx rewite 설정하기

sungbum hong edited this page  · 7 revisions

이 페이지에서는 Nginx에 XE를 설치할 경우, rewrite 설정 방법에 대하여 설명합니다.

개요

XE에서는 짧은주소의 사용을 위하여 rewrite rule을 사용하고 있습니다. 웹서버로 apache를 사용할 경우, apache의 rewrite_mod와 .htaccess 파일을 사용하여 rewrite를 구동시킵니다. 하지만 웹서버가 Nginx일 경우에는, rewrite를 위하여 별도의 설정이 필요합니다.

설정 방법

설정방법은 크게 두가지 과정을 거칩니다.

  1. xe를 위한 rewrite rule이 기록된 xe_rewrite.conf 파일을 작성
  2. nginx의 설정파일인 nginx.conf 파일에 새로 작성한 xe_rewrite.conf 파일을 include하기

xe_rewrite.conf 작성하기

nginx의 conf 디렉토리로 이동합니다.
(NGINX_DIR은 실제 자신의 서버에 nginx가 설치된 디렉토리 경로로 치환해야 합니다.)

# cd NGINX_DIR/conf

xe_rewrite.conf 파일을 새로 작성합니다.

# pwd
NGINX_DIR/conf
# vi xe_rewrite.conf

xe_rewrite.conf 파일의 편집기에서 아래의 내용을 붙여넣습니다.

# reserve XE Layout Template Source File (*.html)
rewrite ^/(layouts|m.layouts)/(.+)/(.+).html$ /index.php last;

# conf, query, schema
rewrite ^/(modules|addons|widgets)/(.+)/(conf|queries|schemas)/(.+).xml$ /index.php last;

# static files
rewrite ^/(.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) /files/$2/$3 last;
rewrite ^/(.+)/(files|modules|widgets|widgetstyles|layouts|m.layouts|addons)/(.*) /$2/$3 last;

# rss, blogAPI
rewrite ^/(rss|atom)$ /index.php?module=rss&act=$1 last;
rewrite ^/([a-zA-Z0-9_]+)/(rss|atom|api)$ /index.php?mid=$1&act=$2 last;
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)$ /index.php?vid=$1&mid=$2&act=$3 last;

# trackback
rewrite ^/([0-9]+)/(.+)/trackback$ /index.php?document_srl=$1&key=$2&act=trackback last;
rewrite ^/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ /index.php?vid=$1&document_srl=$2&key=$3&act=trackback last;

# administrator page
rewrite ^/admin/?$ /index.php?module=admin last;

# document permanent link
rewrite ^/([0-9]+)$ /index.php?document_srl=$1 last;

# mid link
rewrite ^/([a-zA-Z0-9_]+)/?$ /index.php?mid=$1 last;

# mid + document link
rewrite ^/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?mid=$1&document_srl=$2 last;

# vid + mid link
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ /index.php?vid=$1&mid=$2 last;

# vid + mid + document link
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?vid=$1&mid=$2&document_srl=$3 last;

# mid + entry title
rewrite ^/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?mid=$1&entry=$2 last;

# vid + mid + entry title
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?vid=$1&mid=$2&entry=$3 last;

nginx.conf 수정하기

nginx.conf 파일을 편집기로 엽니다.

# pwd
NGINX_DIR/conf
# vi nginx.conf

nginx.conf를 아래와 같이 수정합니다.

http {
    include       mime.types;
    default_type  application/octet-stream;

    ....중략....

    server {
        listen      80;
        server_name  www.mydomain.com;
        root /home/public_html;
        index index.php;

        ....중략 ....

        # xe rewrite 적용하기
        include xe-rewrite.conf;
    }
}

위의 코드에서 봐야할 설정은 include xe-rewrite.conf입니다. xe 사이트에 대해 설정되어 있는 server 항목 안에 include xe-rewrite.conf; 코드가 위치하면 됩니다.

nginx 재시작

nginx를 재시작합니다.

# sudo service nginx restart

다시 XE를 설치를 진행합니다. 설치 진행 과정에서 짧은 주소에 관한 안내가 나타나지 않는다면, 짧은 주소를 정상적으로 사용할 수 있습니다.



출처 : https://github.com/xpressengine/xe-core/wiki/Nginx-rewite-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


+ Recent posts