그누보드5에 어울리는 Caddy 2 설정파일입니다.
링크에 설치부터 설명까지 다 적어뒀습니다!
우분투 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개
우님 서버에서 ./history 던가... 사용한 명령어 목록 다운받으면 그게 바로 보물일듯요.
그래도 하나씩 성공하면 기분이 좋더라구요~
메뉴 생성도 잘 되고, 글 작성도 됩니다.
https://caddy.community/t/rewrite-apache-nginx-rewrite-block-to-caddy/9009
여기에 캐디 관리자들과 대화가 있습니다.
정확하게 짧은 주소를 표현해주고 있습니다. 그런데 내용관리 내용물의 경우
기존 주소로는 정확하게 연결이 되는데, 짧은주소로 설정시 연결이 안되고 홈 화면으로 돌아오거나 없는 게시판이라고 뜹니다 ㅠㅠㅠ
이것만 해결하면 WIKI에 올려준다고 하는데 ㅠㅠ 한번 봐주시겠어요? ㅠㅠ
현재:
@content path_regexp content ^content/([0-9a-zA-Z_]+)$
rewrite @content /bbs/content.php?co_id={re.content.1}&rewrite=1
아마도 / 가 content앞에 빠지지 않았을까 생각됨.
@content path_regexp content ^/content/([0-9a-zA-Z_]+)$
rewrite @content /bbs/content.php?co_id={re.content.1}&rewrite=1
짧은주소를 한글표기 그대로 할때는 없는 게시판이라고 뜨네요 ㅠㅠ
https://ball.ml/
현재 숫자로 표기되게 했습니다.
밑에 내용관리 부분 회사소개 등을 누르면 홈 화면으로 갑니다 ㅠㅠ
아래 부분만 처리하면 되는 것이네요
예시에 숫자는 마지막에 /가 없는데.. 한글은 /가 들어가 있네요..
일단 없는 것으로 만들어 보면..
https://docker.apachezone.com/free/안녕하세요
로 가정하면
@board path_regexp board ^/([가-힝0-9a-zA-Z_]+)$
rewrite @board /bbs/board.php?bo_table={re.board.1}&rewrite=1
https://docker.apachezone.com/free/안녕하세요/
로 생각한다면
@board path_regexp board ^/([가-힝0-9a-zA-Z_]+)/$
rewrite @board /bbs/board.php?bo_table={re.board.1}&rewrite=1
로 테스트 부탁드립니다.
짧은 주소 글쓰기 - 게시판 목록에서 글쓰기 버튼 누르면 주소 붙은채로 홈페이지로 돌아감
짧은 주소 설정시 - 글 수정 버튼 누르면 홈페이지로 돌아감 (주소는 write가 붙은채로)
이 문제는 어떻게 해결할 수 있을까요? ㅠㅠ
짧은 주소 글쓰기 - 게시판 목록에서 글쓰기 버튼 누르면 주소 붙은채로 홈페이지로 돌아감
짧은 주소 설정시 - 글 수정 버튼 누르면 홈페이지로 돌아감 (주소는 write가 붙은채로)
이 문제는 어떻게 해결할 수 있을까요? ㅠㅠ
-------자답-------
@write path_regexp write ^/([0-9a-zA-Z_]+)$
rewrite @write /bbs/board.php?bo_table={re.write.1}&rewrite=1
를
@write path_regexp write ^/([0-9a-zA-Z_]+)$
rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1
이렇게 바꾸면 되겠네요!!
잠결에 적다보니 잘못적었나봐요.
board.php가 아니라 write.php가 아닐까요
@write path_regexp write ^/([0-9a-zA-Z_]+)$
rewrite @write /bbs/board.php?bo_table={re.write.1}&rewrite=1
그렇게 빨리 댓글 다실 줄은 몰랐습니다 .ㅎㅎ
방금 수정했는데 똑같은데요 흠.. 왜 그럴까요?
test01/test01
테스트 부탁드립니다 .ㅠㅠ
@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1
아직도 잠이 덜깼네요 ㅋㅋㅋ 3시간 자고 출근했더니 ㅠㅠ
감사합니다. 도전해볼게요!
마젠토님 덕분에 완성하네요 ㅠㅠ
문제는 글 수정을 눌러도 새글쓰기로 되네요 ㅠㅠ
https://ball.ml/free/write?w=u&wr_id=3&page=
이 형태에서 뒤에 ?w=u&wr_id=3&page= 이게 안먹는 것 같습니다.
https://n.wsgvet.com/free/write?w=u&wr_id=28&page= 이렇게 나와야 되는데...
@write path_regexp write ^/([0-9a-zA-Z_]+)/write?(.*)$
rewrite @write /bbs/write.php?bo_table={re.write.1}{re.write.2}&rewrite=1
그룹1이 free 가 되어야 되고
그룹2가 ?w=u&wr_id=6&page=
가 되니
/bbs/write.php?w=u&wr_id=6&page=&bo_table=free
가 되면 될 것 같습니다.
rewrite @write /bbs/write.php{re.write.2}&bo_table={re.write.1}&rewrite=1
완전히 새로운 형태로 글쓰기와 글수정을 분리해서 적용해보려고 했는데 ㅠㅠㅠㅠㅠㅠ
@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1
@modify path_regexp modify ^/([0-9a-zA-Z_]+)/write?w=u&wr_id=([0-9]+)&page=$
rewrite @modify /bbs/write.php?w=u&bo_table={re.modify.1}&wr_id={re.modify.2}&rewrite=1
이렇게 만들어도 안되네요 크흐흐흐흑 ㅠㅠㅠ
직접 들어 오는 것을 console.log 로 찍어 볼수 없을 까요?
이번에는 ^/([0-9a-zA-Z_]+)/write\??(.*)$
그룹1은 free
그룹2는 ?가 빠집니다. 원래는 / 앞에도 \가 들어가야 되는데 \?가 먹을지 모르겠네요.
rewrite @write /bbs/write.php?bo_table={re.write.1}&{re.write.2}&rewrite=1
로그 찍어볼게요!
https://caddyserver.com/docs/caddyfile/directives/log
바로 볼게요!
로그에는
[10/Jul/2020:03:29:45 +0000] \"GET /free/write?w=u&wr_id=7&page= HTTP/2.0\" 200 5975"
그냥 이렇게 출력이 되네요. 흠...
[10/Jul/2020:03:30:07 +0000] \"GET /free/write?w=u&wr_id=6&page= HTTP/2.0\" 200 5769
이렇게 찍히기도 하네요!
혹시 caddy server에 들어가 있는 config 한번 체크해 주세요.
log {
output file /var/log/caddy/caddy.log {
roll_size 2MiB
}
format json
}
이렇게 했거든요.
https://caddyserver.com/docs/caddyfile/directives/log
여기 있는대로 했는데... 흠.. 리라이트된 것이 안찍히네요.
아래는 아파치인데.. 어떻게 옵션이 넘어 갈까요?
rewrite=1의 의미가 뭐죠? 이 의미가 옵션을 넘겨준다면 말이 되겠죠?
RewriteRule ^([0-9a-zA-Z_]+)/write$ bbs/write.php?bo_table=$1&rewrite=1 [QSA,L]
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"
]
}
}
이렇게 나옵니다 ㅠㅠ
결국은 &rewrite=1이 들어가면서 write.php가 거부한것 같습니다.
아파치나 nginx에서 열심히 rewrite=1, rewrite=2 이것에 대한 의미를 못찾아서..
저는 이것을 thisgun님한테 물어 볼려고 했죠..
그런데 아파치나 nginx에서 옵션이 넘어가는 부분이 그부분 밖에 없다고 보고, 코드에서 옵션을 찾았습니다. (캐디서버 매뉴얼이 너무 개떡 같아서..)
정말 대단하십니다. ㅎㅎ 덕분에 마무리 했네요!
제 설정파일을 그대로 올리고, 해당 부분에 대한 설명을 추가하였습니다. ㅎㅎ
불펌방지, 보안헤더 등등
https://caddyserver.com/docs/caddyfile/concepts#placeholders
여기보니 {http.request.uri.query} 를 {query} 로 바꿀 수 있네요!!! 더 간단해졌어요 ㅎ
위의 다른 곳도 &rewrite=1 로 되어 있는 곳을 &{query}로 변경해 주세요
rewrite=1 도 있고, rewrite=2도 있고.. <= 이것을 Q/A 물어 볼려고 했었죠.
그런데 RSS를 보다보니 게시판 RSS link 주소가 각 게시물 링크가 생성이 안되고 그냥 게시판 링크로만 나오더라구요.
그누보드 5.3에서는 게시물 링크로 잘 나오는데, 5.4버전의 버그로 보입니다. 그래서 버그 제보했어요. ㅎㅎ
정리해서 Caddy2 설치하는 방법에 대해서 글을 올려봐야겠습니다.
게시판 목록
서버관리자
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 534 | 5년 전 | 1856 | ||
| 533 |
|
5년 전 | 1517 | |
| 532 | 5년 전 | 2034 | ||
| 531 | 5년 전 | 1009 | ||
| 530 |
|
5년 전 | 1180 | |
| 529 | 5년 전 | 1020 | ||
| 528 |
|
5년 전 | 1062 | |
| 527 | 5년 전 | 1102 | ||
| 526 | 5년 전 | 1389 | ||
| 525 | 5년 전 | 1113 | ||
| 524 | 5년 전 | 1074 | ||
| 523 |
|
5년 전 | 1483 | |
| 522 | 5년 전 | 1161 | ||
| 521 | 5년 전 | 1583 | ||
| 520 | 5년 전 | 1201 | ||
| 519 | 5년 전 | 1145 | ||
| 518 | 5년 전 | 1482 | ||
| 517 |
|
5년 전 | 1063 | |
| 516 |
|
5년 전 | 1292 | |
| 515 | 5년 전 | 1128 | ||
| 514 | 5년 전 | 993 | ||
| 513 | 5년 전 | 1658 | ||
| 512 |
|
5년 전 | 1170 | |
| 511 | 5년 전 | 1014 | ||
| 510 | 5년 전 | 2795 | ||
| 509 | 5년 전 | 1231 | ||
| 508 |
|
5년 전 | 913 | |
| 507 | 5년 전 | 1261 | ||
| 506 | 5년 전 | 1380 | ||
| 505 | 5년 전 | 1331 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기