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
location ~ ^/gnu[0-9]+/ {
rewrite ^/gnu([0-9]+)/(.*)$ /$2 break;
try_files $uri $uri/ @gnuboard;
}
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
* /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;
~
}