테스트 사이트 - 개발 중인 베타 버전입니다

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

masahide 1년 전 조회 1,186

안녕하세요.
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;</p>

<p>        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;</p>

<p>        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개

채택된 답변
+20 포인트
1년 전

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

location ~ ^/gnu[0-9]+/ {

    rewrite ^/gnu([0-9]+)/(.*)$ /$2 break;

    try_files $uri $uri/ @gnuboard;

}</p>

<p>location @gnuboard {

    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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

1년 전

* /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

</p>

<p>#### 그누보드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 #####</p>

<p> </p>

<p>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;

    }

}</p>

<p>

 

/etc/nginx/sites-available/abc

</p>

<p>server {

    listen 80;

    listen [::]:80;

    server_name www.도메인.com 도메인.com;  

    root /var/www/폴더명;

    index index.php ;

    

    include snippets/abc-rewrite.conf;

    

    ~

}

 </p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
1년 전
계속 시간 내주셔서 정말 감사합니다.

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인