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

그누보드5에 어울리는 Caddy 2 설정파일입니다.

· 5년 전 · 2730 · 58

링크에 설치부터 설명까지 다 적어뒀습니다!

 

우분투 20.04에서 Caddy 2를 설치했을 때 기준입니다.

 

설정 수정하기

 

[code]

nano /etc/caddy/Caddyfile

[/code]

 

이제 밑 코드를 그대로 넣으면 됩니다.

 

[code]

# http3를 실험적으로 사용하시려면 밑 옵션을 쓰시면 됩니다. 필요없다면 지워도 됩니다.

{

experimental_http3

}

 

# www를 non-www로 리다이렉트, 반드시 자신의 주소로 변경하기

 

www.example.com {
redir https://example.com{uri}
}

 

# 도메인 네임 지정하기 및 해당 도메인 설정 시작, 반드시 자신의 주소로 변경하기

 

example.com {

 

# 인코딩 방법 지정

 

encode zstd gzip

 

# 사이트 디렉토리 설정 : 자신의 설정으로 변경하세요.

 

root * /var/www/gnuboard

 

# 정적파일 이용가능하게하는 설정

 

file_server

 

# php7.4-fpm 연결

 

php_fastcgi unix//run/php/php7.4-fpm.sock

 

# 로그 설정 DEBUG나 INFO를 선택해서 쓰시면 됩니다.

log {
output file /var/log/caddy/caddy.log {
roll_size 2MiB
}
format json
level DEBUG
}

 

# 보안 헤더 넣기

 

header {
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-XSS-Protection "1; mode=block"
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
}

 

# 캐시 컨트롤 지정(해당 확장자에 5184000 캐시 컨트롤 지정)

 

@static {
  file
  path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2
}
header @static Cache-Control max-age=5184000

 

# 이미지 불펌 방지 - 반드시 자신의 도메인으로 바꾸세요.

 

@fontPirate {
path /data/*
not header Referer https://example.com*
}

respond @fontPirate "Access denied" 403 {
close
}

 

# 그누보드 짧은 주소 리라이트

 

@content path_regexp content ^/content/([0-9a-zA-Z_]+)$
rewrite @content /bbs/content.php?co_id={re.content.1}&{query}
@title path_regexp title ^/content/([^/]+)/$
rewrite @title /bbs/content.php?co_seo_title={re.title.1}&{query}
@rss path_regexp rss ^rss/([0-9a-zA-Z_]+)$
rewrite @rss /bbs/rss.php?bo_table={re.rss.1}
@board path_regexp board ^/([0-9a-zA-Z_]+)$
rewrite @board /bbs/board.php?bo_table={re.board.1}&{query}
@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&{query}
@seo path_regexp seo ^/([0-9a-zA-Z_]+)/([^/]+)/$
rewrite @seo /bbs/board.php?bo_table={re.seo.1}&wr_seo_title={re.seo.2}&{query}
@id path_regexp id ^/([0-9a-zA-Z_]+)/([0-9]+)$
rewrite @id /bbs/board.php?bo_table={re.id.1}&wr_id={re.id.2}&{query}

 

# 설정 마지막

}

[/code]

 

https://ball.ml

 

여기에 Caddy 2로 돌아가는 그누보드를 볼 수 있습니다.

 

테스트 서버라서 금방 없어질 수 있습니다.

 

 

짧은 주소도 완벽하게 작동합니다.

댓글 작성

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

로그인하기

댓글 58개

@우성짱 그렇다면 옵션이 두번 넘어가지 않을까요?
1. caddy에서도 rewrite=1 이 옵션인데 제대로 안넘어감.
2. 그래서 아래처럼 빼고...

3. bbs/write.php에서 bo_table은 넘어가니 글쓰기가 되겠죠? 그런데 $w 와 $wr_id 값이 안넘어 오는 것 같습니다.

rewrite @write /bbs/write.php?bo_table={re.write.1}&{re.write.2}
@마젠토 아까

@write path_regexp write ^/([0-9a-zA-Z_]+)/write\??(.*)$
rewrite @write /bbs/write.php?bo_table={re.write.1}&{re.write.2}&rewrite=1

이걸하니 댓글과 글이 안써지더라구요. w값이 넘어오지 않았습니다, 토큰값이 정상이 아닙니다? 이런 것이 나왔습니다.

캐디2 커뮤니티에도 질문을 올렸습니다. 여기 질게에도 내용을 정리해서 올려두었습니다. ㅎㅎ

$w 와 $wr_id 값이 안넘어가는게 가장 큰 핵심인 것 같습니다.
@우성짱 캐디서버 코드도 보고 있습니다. ㅠㅠ
옵션에 debug를 넣으면 rewrite된 것도 로그가 되는 것 같습니다.
https://caddyserver.com/docs/caddyfile/options#global-options
@마젠토

방금 DEBUG로 수정 후 봤는데 같네요 ㅠㅠ

"common_log": "xxx.xxx.xxx.xxx - - [10/Jul/2020:04:26:50 +0000] \"GET /free/write?w=u&wr_id=7&page= HTTP/2.0\" 200 5974",
"duration": 0.016856924,
"size": 5974,
"status": 200,
"resp_headers": {
"Content-Type": [
"text/html; charset=utf-8"
],
"Expires": [
"0"
],
"Vary": [
"Accept-Encoding"
],
"Server": [
"Caddy"
],
"Alt-Svc": [
"h3-29=\":443\"; ma=2592000"
],
"X-Xss-Protection": [
"0;"
],
"Set-Cookie": [
"e1192aefb64683cc97abb83c71057733=ZnJlZQ%3D%3D; expires=Sat, 11-Jul-2020 04:26:50 GMT; Max-Age=86400; path=/"
],
"Cache-Control": [
"pre-check=0, post-check=0, max-age=0"
],
"X-Content-Type-Options": [
"nosniff;"
],
"X-Frame-Options": [
"SAMEORIGIN;"
],
"Strict-Transport-Security": [
"max-age=31536000;"
],
"P3p": [
"CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\""
],
"Last-Modified": [
"Fri, 10 Jul 2020 04:26:50 GMT"
],
"Pragma": [
"no-cache"
],
"Content-Encoding": [
"gzip"
]
}
}

이렇게 나옵니다 ㅠㅠ
@마젠토 대박입니다. 이제 다 잘됩니다. ㅎㅎ 대박!!!
@우성짱 깃헙 코드 열심히 보고 있는데 Q&A 올리셔서.. ㅎㅎ
결국은 &rewrite=1이 들어가면서 write.php가 거부한것 같습니다.
아파치나 nginx에서 열심히 rewrite=1, rewrite=2 이것에 대한 의미를 못찾아서..

저는 이것을 thisgun님한테 물어 볼려고 했죠..

그런데 아파치나 nginx에서 옵션이 넘어가는 부분이 그부분 밖에 없다고 보고, 코드에서 옵션을 찾았습니다. (캐디서버 매뉴얼이 너무 개떡 같아서..)
@마젠토 대박이네요. 캐디 서버 매뉴얼 최악인거 인정합니다.

정말 대단하십니다. ㅎㅎ 덕분에 마무리 했네요!
@우성짱 가능하면 싹 정리해서 새로 올려주세요. 다른 분들도 사용가능하게..
@마젠토

제 설정파일을 그대로 올리고, 해당 부분에 대한 설명을 추가하였습니다. ㅎㅎ
@우성짱 감사합니다. 제 블로그에도 옮겨 놓겠습니다. rewrite=1을 모두 바꿔야 될 것 같습니다.

게시글 목록

번호 제목
2839
2838
2830
2827
2820
2814
2811
2808
2807
2805
2798
2790
2789
2779
2773
2772
2768
2765
2756
2754
2740
2739
2736
2730
2725
2715
2712
2710
2709
2704