nginx에서 도메인.com/gnu 로 설치했을 때 짧은주소 설정 방법 좀 알려주세요.

nginx에서 도메인.com/gnu 로 설치했을 때 짧은주소 설정 방법 좀 알려주세요.

QA

nginx에서 도메인.com/gnu 로 설치했을 때 짧은주소 설정 방법 좀 알려주세요.

본문

안녕하세요.
nginx에 그누보드를 설치하고 짧은주소 설정을 했습니다.

폴더에 바로 그누보드 설치하고 아래처럼 설정하면 짧은주소 잘됩니다.

 

etc/nginx/snippets/폴더명-rewrite.conf

#### 그누보드5 nginx rules BEGIN #####
if (!-e $request_filename){
rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 break;
rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 break;
rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 break;
rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
}
#### 그누보드5 nginx rules END #####

 

sudo nano /etc/nginx/sites-available/폴더명

server {
    listen 80;
    listen [::]:80;
    server_name www.도메인.com 도메인.com;  
    root /var/www/폴더명;
    index index.php ;
    include snippets/폴더명-rewrite.conf;
    location ~ \.(gif|jpg|png)$ {
        add_header Vary "Accept-Encoding";
        add_header Cache-Control "public, no-transform, max-age=31536000";
    }
    location ~* \.(css|js)$ {
        add_header Cache-Control "public, max-age=604800";
        log_not_found off;
        access_log off;
    }
    location ~*.(mp4|ogg|ogv|svg|svgz|eot|otf|woff|woff2|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|cur)$ {
        add_header Cache-Control "max-age=31536000";
        access_log off;
    }
    charset utf-8;
    server_tokens off;
    client_max_body_size 100M;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ /\.ht {
        deny all;
    }
    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }
}


그런데 제가 여러개의 홈페이지를 
도메인.com
도메인.com/gnu1
도메인.com/gnu2
도메인.com/gnu3
...
이런 식으로 수십개 넣었습니다.

 

도메인.com은 짧은주소가 잘 되지만
나머지는 안돼서 아래처럼 한번 설정해 봤는데 역시나 짧은주소가 안되더군요.

 

etc/nginx/snippets/gnu1-rewrite.conf

#### 그누보드5 nginx rules BEGIN #####
if (!-e $request_filename){
rewrite ^/content/([0-9a-zA-Z_]+)$ /gnu1/bbs/content.php?co_id=$1&rewrite=1 break;
rewrite ^/content/([^/]+)/$ /gnu1/bbs/content.php?co_seo_title=$1&rewrite=1 break;
rewrite ^/rss/([0-9a-zA-Z_]+)$ /gnu1/bbs/rss.php?bo_table=$1 break;
rewrite ^/([0-9a-zA-Z_]+)$ /gnu1/bbs/board.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/write$ /gnu1/bbs/write.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /gnu1/bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /gnu1/bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
}
#### 그누보드5 nginx rules END #####

 

sudo nano /etc/nginx/sites-available/gnu1

server {
    listen 80;
    listen [::]:80;
    server_name www.도메인명.com/gnu1 도메인명.com/gnu1;  
    root /var/www/폴더명/gnu1;
    index index.php ;
    include snippets/gnu1-rewrite.conf;
    location ~ \.(gif|jpg|png)$ {
        add_header Vary "Accept-Encoding";
        add_header Cache-Control "public, no-transform, max-age=31536000";
    }
    location ~* \.(css|js)$ {
        add_header Cache-Control "public, max-age=604800";
        log_not_found off;
        access_log off;
    }
    location ~*.(mp4|ogg|ogv|svg|svgz|eot|otf|woff|woff2|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|cur)$ {
        add_header Cache-Control "max-age=31536000";
        access_log off;
    }
    charset utf-8;
    server_tokens off;
    client_max_body_size 100M;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ /\.ht {
        deny all;
    }
    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }
}

설정파일을 활성화, 재시작은 다 했습니다.

 

이런 경우 어떻게 설정을 해야 하나요?
만약 설정 방법이 있다고 해도 설마 수십개의 폴더 다 따로 설정해야 하는 건 아니겠지요?

Apache에서는 .htaccess로 간단히 되는데 nginx은 어렵네요.

 

아시는 분 답변 주시면 정말 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 2

* /etc/nginx/snippets/gnu-rewrite.conf

location ~ ^/gnu[0-9]+/ {
    rewrite ^/gnu([0-9]+)/(.*)$ /$2 break;
    try_files $uri $uri/ ;
}
location  {
    rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 break;
    rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 break;
    rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 break;
    rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 break;
    rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 break;
    rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
    rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
}


include snippets/gnu-rewrite.conf

친절하신 답변 감사합니다.
알려주신게 도메인.com/gnu 일 경우 설정하는 방법 맞는지요?
그리고 무얼 뜻하는지 모르겠는데 일단 그대로 두었습니다.
알려주신대로 설정을 해봤는데 여전히 짧은주소는 안되고 있습니다.

* /etc/nginx/sites-available/gnu1
~
server_name www.도메인명.com/gnu1 도메인명.com/gnu1;  
root /var/www/폴더명/gnu1;

은 정상적이지 않은 설정이라 생각합니다.

 

gnu1.abc.com, gnu2.abc.com 은 별도의 사이트가 맞지만,
abc.com/gun1, abc.com/gnu2 는 별도의 사이트가 아닙니다.

 

abc.com 웹 루트 하위에 bbs 폴더가 있으면

abc.com/bbs 는, (abc.com 사이트의 bbs 폴더의 기본 파일을 로드한다는 의미)

abc.com/bbs/index.php 파일을 로드합니다.

제 의견/생각으로 다시 정리하면..
gnu1-rewrite.conf, gnu1, 

gnu2-rewrite.conf, gnu2, 

....

은 설정하지 않는 것이 맞는 것 같습니다.

abc-rewrite.conf, abc 만 있으면 될 것으로 생각합니다.

* abc-rewrite.conf


#### 그누보드5 nginx rules BEGIN #####
if (!-e $request_filename){
rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 break;
rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 break;
rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 break;
rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
}
#### 그누보드5 nginx rules END #####
 
location ~ ^/gnu[0-9]+/ {
    location ~ ^/gnu[0-9]+/content/([0-9a-zA-Z_]+)$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 last;
    }
    location ~ ^/gnu[0-9]+/content/([^/]+)/$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 last;
    }
    location ~ ^/gnu[0-9]+/rss/([0-9a-zA-Z_]+)$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 last;
    }
    location ~ ^/gnu[0-9]+/([0-9a-zA-Z_]+)$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 last;
    }
    location ~ ^/gnu[0-9]+/([0-9a-zA-Z_]+)/write$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 last;
    }
    location ~ ^/gnu[0-9]+/([0-9a-zA-Z_]+)/([^/]+)/$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 last;
    }
    location ~ ^/gnu[0-9]+/([0-9a-zA-Z_]+)/([0-9]+)$ {
        rewrite ^/gnu[0-9]+/(.*)$ /$1 break;
        rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 last;
    }
}

 

/etc/nginx/sites-available/abc


server {
    listen 80;
    listen [::]:80;
    server_name www.도메인.com 도메인.com;  
    root /var/www/폴더명;
    index index.php ;
    
    include snippets/abc-rewrite.conf;
    
    ~
}
 

계속 시간 내주셔서 정말 감사합니다.

알려주신 내용을 기존 맨 처음 생성했던
폴더명-rewrite.conf
sites-available/폴더명
여기에 수정을 해서 넣어도 여전히 안되고

기존거 그대로 두고
abc-rewrite.conf
abc
를 새로 만들어도 여전히 안되네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 130
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT