nginx之外的web 服务器caddy

caddy比nginx的不同:

  1. caddy自带https的前端,直接将http服务器转换为https服务器。而nginx需要用户自己安装。
  2. caddy可以自己申请证书,而且可以过期时自动申请。而nginx好像不能申请证书,过期也无法帮你申请。

另外,浏览器通过https连接本地/内部的https网页时,chrome会提示安全问题,此时可以设置将它加入例外,但还有个更简单的方法,在chrome网页里直接盲敲thisisunsafe就可以马上访问该https网页。

caddy 有两种格式的配置方法,一种叫Caddyfile格式,一种叫json格式。Caddyfile格式简洁明了,json由于有括号和缩进,比较不适合人眼。但是json才可以进行完整配置,Caddyfile不能进行完整配置,只包含大部分配置,一般情况下绝对够用了。
caddy可以将Caddyfile转换成json,供server管理者查看,方法:
caddy adapt -config Caddyfile -pretty -validate > config.json
其中Caddyfile就是配置文件名,config.json保存转换后的配置,-pretty美化打印,-validate对配置文件进行正确性验证。
caddy run 相当于 caddy start,但是run在前台运行,不创建daemon,而start在后台运行。他们默认寻找当前目录下的Caddyfile作为配置文件,如果配置文件在别处,可以用-config path/to/config/file来指定配置文件路径。一个典型的Caddyfile如下:

localhost {
    respond "Hello, world!"
}

localhost:2016, 127.0.0.1:2016 {
    respond "Goodbye, world!"
}

该配置文件创建了两个server容器,一个是localhost:443 (https), 一个是localhost:2016 (https),并将127.0.0.1:2016的所有访问(http 和 https)全部redirect到localhost:2016。另外本机的80端口(http)会被默认redirect到其中一个server容器,至于是哪一个,只有运行之后才知道,如果不接受这种随机redirect 80端口,可以自己写死。

另外,443和80端口都需要root权限,caddy第一次运行时会申请CA认证,好像是放在:/root/.local/share/caddy/,下面是我自己的目录结构:

/root/.local/share/caddy/
├── certificates
│   └── local
│       ├── 127.0.0.1
│       │   ├── 127.0.0.1.crt
│       │   ├── 127.0.0.1.json
│       │   └── 127.0.0.1.key
│       └── localhost
│           ├── localhost.crt
│           ├── localhost.json
│           └── localhost.key
├── locks
└── pki
    └── authorities
        └── local
            ├── intermediate.crt
            ├── intermediate.key
            ├── root.crt
            └── root.key

8 directories, 10 files

这只是我运行了上面那个典型的Caddyfile而产生的CA文件。下次补上用域名后caddy自动申请CA的文件结构。

用真正的域名来运行caddy,下面是我服务器上的配置:

Caddyfile:

:my_port, my_domain.com:my_port, www.my_domain.com:my_port {
	respond "I love China deep."

	log {
		output file /home/my_user_home/temp/caddy-log/caddy.log {
			roll_size    10MiB 
			roll_keep    10
		}
	}
}

其中,my_port 和 my_domain 我做了隐藏,my_user_home 我也做了隐藏。
使用 sudo caddy_linux_amd64 start -config /path/to/Caddyfile 运行caddy 后,它立刻会自动帮你申请my_domain的证书,你什么都不用管,直接从浏览器就可以访问了。记住,它会把80端口forward到你的my_port端口,你在浏览器访问http://my_domain.com时,会forward到https://www.my_domain.com:my_port,也即会将80端口的访问forward,但是它不会forward 443端口,你访问https://my_domain.com是ERR_CONNECTION_REFUSED。

posted @ 2021-11-26 17:30  微信公众号--共鸣圈  阅读(593)  评论(0编辑  收藏  举报