简单直接的web服务器caddy

使用 caddy 申请 SSL 证书 渲染 mardown 同步 Git 代码 创建文件服务器等~

caddy 是用go语言开发的轻巧高性能的HTTP服务器,一个文件就能运行,不再像nginx 那样需要各种编译
官方下载 或者 执行:curl https://getcaddy.com | bash -s personal 安装
安装Caddy前先用’netstat -lntp’ 这个命令查看’80端口’是否被其它软件占用,否则会安装失败.
安装caddy插件,如安装文件柜插件:curl https://getcaddy.com | bash -s personal http.filemanager.

HTTP域名

注意:”{“ 前面必须有空格

domain1.com:80, domain2.com:80 {
root /home/wwwroot # 网站目录
index index.php # 默认首页
# 这里是配置
}

HTTPS 域名

  • 关于caddy的自动申请网站证书:
    手动指定 SSL证书和密匙 来配置的话,Caddy只会监听 443端口(https),并不会自动设置 80端口(http)的重定向.
    如果是Caddy自动申请的SSL证书的话,http就会自动跳转到https.
    注意:要有域名并且域名已解析绑定到你的服务器ip才能申请证书.
domain.com:443 {
root /var/www/notadd/public
index index.php
tls [email protected] # 自动申请证书,必须在外网,且域名可访问
# 如果你有证书,可如下方式配置
# tls /home/ssl/domain.com.crt /home/ssl/domain.com.key
}

配置PHP转发 (Laravel为例)

Laravel.com:80 {
root /var/www/notadd/public
fastcgi / php-fpm:9000 php {
index index.php
}

# To handle .html extensions with laravel change ext to
# ext / .html

rewrite {
r .*
ext /
to /index.php?{query}
}
gzip # 开启gzip
browse # 开启文件浏览
#日志
log /var/log/caddy/access.log
errors /var/log/caddy/error.log
}

markdown 渲染

caddy 可以直接帮你把md 文件渲染成网页

domian.com:80 {
markdown /blog { #指定md渲染路径为/blog
ext /data # 不进行渲染的目录
js /xxx/xx.js #指定js文件(可选)
css /xxx/xx.css #指定css文件(可选)
template [name] path # 模板,可不填,使用默认 ,模板优先与js,css设置,设置了模板,js,css设置就无效了
}
}

本人测试了,默认渲染比较简单,不写css/模板不能忍.

自动从git 同步

domian.com:80 {
root /home
git https://github.com/notadd/notadd.git /var/www/ {
key /home/git/domian.key # key 文件地址,公有库可忽略
interval 60 # 间隔60秒
# 或者使用钩子同步
hook /hook password # hook地址和密钥,用于 github 等git 仓库推送更新。
}
}

创建文件下载服务器(插件)

需要说明的是,这个自带界面哦,还能在线编辑文件

domian.com:80 {
root /home
filemanager
}

一行配置,负载均衡

laravel.demo:80 {
proxy / localhost:5001 localhost:5002
}

proxy / web1.local:80 web2.local:90 web3.local:100
#

一行配置解决跨域问题:

laravel.demo:80 {
root /home/wwwroot
cors
}

对于共享配置的站点,请指定多个地址:

大专栏  简单直接的web服务器caddyline">localhost:8080, https://site.com, http://mysite.com {
...
}

IP过滤

ipfilter / {
rule block
ip 212.10.15.0-255 213.10.15.0-10 5.23.4.24
blockpage /local/data/default.html
}

网站添加BasicAuth

basicauth / test 12345 #用户名test,密码 12345

错误页面:

#定义默认,全部错误页面
errors {
* default_error.html
}
# 404 ,500
errors {
404 404.html # Not Found
500 500.html # Internal Server Error
}
# 错误记录文件
errors /error.log

重定向

redir 原路径 重定向后路径
#重定向全部到 路径
redir 路径

caddy开机启动配置(centos7+,debian,ubunto):

/etc/systemd/system/caddy.service

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Restart=on-abnormal

; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -conf=/etc/caddy/Caddyfile
ExecReload=/bin/kill -USR1 $MAINPID

; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s

; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
LimitNOFILE=1048576
; Unmodified caddy is not expected to use more than that.
LimitNPROC=512

; Use private /tmp and /var/tmp, which are discarded after caddy stops.
PrivateTmp=true
; Use a minimal /dev
PrivateDevices=true
; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.
ProtectHome=true
; Make /usr, /boot, /etc and possibly some more folders read-only.
ProtectSystem=full

[Install]
WantedBy=multi-user.target

执行开机启动

mkdir -p /etc/caddy && chmod 644 /etc/systemd/system/caddy.service && systemctl daemon-reload && systemctl start caddy.service


centos6安装

# step 1, install caddyserver
curl -s https://getcaddy.com | bash
groupadd -g 33 www-data
useradd
-g www-data --no-user-group
--home-dir /var/www --no-create-home
--shell /usr/sbin/nologin
--system --uid 33 www-data

mkdir /etc/caddy
chown -R root:www-data /etc/caddy
mkdir /etc/ssl/caddy
chown -R www-data:root /etc/ssl/caddy
chmod 0770 /etc/ssl/caddy

# step 2, download sysvinit file
wget https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-sysvinit/caddy -O /etc/init.d/caddy

# step 3, install daemon
cd /usr/local/src
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar zxvf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
cd apps/sys-utils/start-stop-daemon-IR1_9_18-2
gcc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/sbin/

# step 4, start service
service caddy start

当然还有更多好玩的用法,参考官方文档: https://caddyserver.com/docs

中文资料
资料

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12263192.html