Caddy Server looks like is the next-gen web server. Here are some specs about Caddy that might be relevant :
- HTTP/2 & HTTP
- IPv6 & IPv4
- Out of the Box Let's Encrypt support
- Markdown
- Websockets
- Proxy and load balancer
- FastCGI
- Overly simple configuration files
- ... And a lot more !
For a complete list of directives that Caddy supports you can head to the official documentation
Let's Encrypt Integration
As of version 0.8 of Caddy, it is now integrating Let's Encrypt. See Caddy 0.8 Released with Let's Encrypt Integration on the Caddy Blog.
Why is that such a big deal ? What does it mean ? Let's Encrypt could be the subject of a whole blog post. In short terms it allows you to receive and use free SSL certificates and thus allows anyone to provide a secure layer to their website. For a long time, having a valid (signed everywhere) certificate was complicated and expensive. Meaning : If you wanted to provide a security layer to your website you had to pay. And not only you had to pay, but you were also compelled to prove that you're actually the owner of your domain by giving lot of information about yourself. Let's Encrypt breaks this wall. It brings security to any site owner, even those without the funds to pay for a valid certificate. It's the end of the x509 certificate era.
Now what does Caddy have to do with that ? Well Caddy... Automatically serves your sites with HTTPS by using Let's Encrypt. You don't have to do anything, you don't have to worry about the certificates. You don't even have to give out any personal information about yourself. It just abstracts the process of requesting a certificate and using it. It also abstracts the renewal of these certificates. Meaning that with a two line long configuration file like this :
depado.eu {
proxy / localhost:8080
}
It will automatically request Let's Encrypt for a valid certificate and serve
depado.eu
with HTTPS by default. Isn't that just great ? To get more information about that feature of caddy, head over to the documentation about automatic https.Installation
First of all, go to the Caddy Server Download Page and select the features you want, your architecture and operating system. Instead of click on the button, right click and copy the url. Time to ssh into your server and start having fun. First of all, let's download caddy in a relevant location.
# mkdir /etc/caddy/
# wget "https://caddyserver.com/download/build?os=linux&arch=amd64&features=" /etc/caddy/caddy.tar.gz
# tar xvf /etc/caddy/caddy.tar.gz
You can give Caddy the rights to bind to low ports. To do so, here is the command you can execute :
# setcap cap_net_bind_service=+ep /etc/caddy/caddy
Let's create our first
Caddyfile
in /etc/caddy/
. Edit /etc/caddy/Caddyfile
and add something like that :yourdomain.com {
proxy / localhost:5000
}
Assuming something is running on port 5000, Caddy will then proxy every request for the
yourdomain.com
domain directly to the application running on that port. If you already have a website you want to bind to caddy, then head over to the full documentation and see what directives are useful for you. Let's start caddy for the first time so that it can bind itself to Let'sEncrypt service.# cd /etc/caddy/
# ./caddy
Caddy will then ask you for an email to give to the Let'sEncrypt service. If you don't wish to give that out, then don't, but keep in mind that you won't be able to recover your keys if you loose them. Our initial setup is done. Let's move on to the
supervisor
section.Supervisor configuration
In this guide I'll assume you have a functionning supervisor installation. It will allow us to execute caddy as a daemon. First of all we'll edit the
/etc/supervisor/supervisord.conf
and add this line under the [supervisord]
section :minfds=4096
Why is that ? In a production environment, caddy will complain that the number of open file descriptor is too low. The reason is that supervisor's default value is too low (1024, instead of 4096 as recommended by caddy). Now let's add a new program to our supervisor configuration. Create the file
/etc/supervisord/conf.d/caddy.conf
:[program:caddy]
directory=/etc/caddy/
command=/etc/caddy/caddy -conf="/etc/caddy/Caddyfile"
user=www-data
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/caddy_stdout.log
stderr_logfile=/var/log/supervisor/caddy_stderr.log
You can customize the user to the one you want. As I said earlier, caddy now doesn't need root privileges to bind to low ports, so any user will do (prefer a user with few rights). Caddy is now ready to be started by supervisor ! Simply add the program into supervisor and enjoy.
# supervisorctl reread
# supervisorctl add caddy
# supervisorctl start caddy
from http://depado.markdownblog.com/2015-12-07-setting-up-caddy-server-on-debian
相关帖子:http://briteming.blogspot.com/2017/11/caddyhttp2-proxy.html
------------------
Caddy – 最简单的支持 HTTP/2 的网页服务器[Win/Mac/Linux]
Caddy是一款使用Go语言的简单易用的单文件网页服务器,原生支持HTTP/2,自动创建
Let’s Encrypt证书,支持反代、rewrite、git、REST API、ipfilter、jsonp等,
非常适合各种轻量级的网页应用,或者在本地电脑使用,无论是静态HTML、图片,或者是
WordPress、Drupal、Markdown,统统都支持。
Caddy存在的意义在于不需要繁琐的编译 Nginx、Apache,只需要运行Caddy就完成了
HTTP 服务器的搭建.如果你有自己的域名,还能自动配置Let’s Encrypt,实现
HTTPS加密,使用的是HTTP/2协议。
只需要在 Caddy 的目录下创建 Caddyfile 文件,里面写上域名就行了…
最简单的教程:
下载 Caddy
在 Caddy 目录放置 index.html 文件
打开浏览器,输入 127.0.0.1:2015
如果你是一个网页设计师,那 Caddy 比那些一键安装包要方便多了;
如果想在 VPS 搭建一个静态服务器,用 Caddy 比 Nginx 更加简便。
而如果你想更换端口、开启日志、开启 git、markdown 之类的,
就需要配置下Caddyfile 文件了。
比如,你可以让 Caddy 定期去 git pull 项目库,让其自动更新,
你只需要管好 git 就行了。你也可以直接写 Markdown,Caddy自动帮你渲染成HTML…
呃,其实这篇文章不是一篇教程,只是一篇介绍文字,如果你想有更复杂的功能,需要去
研究 Caddy 文档,就技术门外汉来看,
入门不难,至少比 Nginx 简单多了。
下载地址: https://caddyserver.com/download
https://getcaddy.com/
-----------
轻松把文件夹变成网站!使用 Caddy 服务器软件自己搭建网页形式的文件共享
随着网盘陆续的关闭,各种承诺的破灭,让很多人开始重新考虑将重要文件搬回到自己的电脑上了。不过,
保存在个人电脑上的文件想要分享始终不是很便利。
今天我们介绍的是一种另类的网页式文件共享方式,使用 Caddy 服务器软件!轻松将自己的电脑变成服务器,
搭建一个属于自己的“网站”,从而将文件夹以网页的形式共享出去,让局域网甚至互联网上的其他电脑、
手机、平板设备均能通过浏览器轻松访问和下载它们……
什么是 Caddy?
Caddy 实际上是一款免费开源的 WEB 服务器软件,可以让用户非常简单地在电脑上搭建出一个网站。
它的特点是配置简单,入门容易,稍微研究下即能将自己的文件部署到局域网或互联网上,
共享给其他设备通过浏览器进行访问。
虽说看起来 Caddy 似乎很高端的样子 (至少搭建网站服务器什么的对非专业人士确实有点难度),
但是 Caddy 本身是一个以「易用」为目标而开发的软件,使用它仅仅需要通过编写简单的“配置文件”即可,
比起那些要用脚本和专业知识才能玩得转的服务器程序,Caddy 的门槛是大大降低了。
对于想尝试自己搭建网页服务器而又没有太多基础的朋友应该说是很具有可玩性的。
Caddy 的功能和模块很多,在这篇文章里我们主要介绍利用 Caddy 内置的文件管理器模块,
实现方便的互联网/局域网文件共享功能,其他的各种更加“专业”的服务器功能和玩法就留待大家自己去研究了。
为了方便读者“入门”,下面我们先介绍一下它的基本使用, 关于“文件管理器模块”的介绍在放在后半段。
Caddy 本身支持 macOS 和 Linux 系统,但本文主要介绍在 Windows 系统下的用法。
Caddy 基本使用 - 搭建基础网站
1. Caddy 的使用非常简单,首先下载 Caddy 软件(下载时需要选择你想要安装的模块,看“注意2”,
本文主要介绍它的 filemanager 模块),并解压到任意目录下。
2. 进入到此文件夹内,在此根目录新建一个“index.html” (首页) 文件,用记事本编辑,
输入任何内容如 “Hello Caddy!” 并保存。
3. 接着双击 Caddy 程序启动,此时在本机的游览器中输入 “localhost:2015”
即可看到 “index.html” 文件中的内容。
注意 1:因为 index.html 文件是网页的首页,Caddy 会自动识别.
如果文件名改成 “another.html”,就必须输入 “localhost:2015/another.html” 才能看到了。
注意 2:如果之后要使用 “filemanager 文件管理器” 等模块,
那么在下载的时候必须要手动勾选对应的模块,默认只勾选了核心模块。
把网址设置为电脑的局域网 IP
上面用 localhost 作为地址可以让本机访问,而如果你希望这个“网站”可以让局域网甚至是互联网上的
其他设备访问,那么就需要为其设置正确的网址域名或 IP 地址了。为简单起见,
我们本教程只以「局域网访问」为例子,如果你需要互联网访问,还得自行去了解 DDNS 动态域名
(比如花生壳)、路由器的端口映射设置等概念。
设置正确的 IP 地址或域名是实现局域网文件共享的前提。本操作分为两步:
首先要获得你的电脑在局域网内的 IP。
将这个 IP 地址写入 Caddy 的特定配置文件里。
Windows 系统下获取本机的局域网 IP 地址的方式为在命令行界面输入“ipconfig”命令并回车。
一般都是类似“192.168.X.XXX”的形式。值得注意的是,大多数路由器默认情况下都是通过DHCP动态,
给设备分配 IP 地址的,每次路由器重启后,你的电脑 IP 地址可能都会变,
因此最好在路由器的设置界面为电脑设置固定的 IP。
在 Caddy 目录下新建一个名为 “Caddyfile” 的配置文件(没有扩展名),用记事本打开,
在里面输入你的电脑的局域网 IP 地址(或者域名)+英文冒号+端口号。重启 Caddy程序后,
就能用任意局域网内的其他设备访问这个地址了。这也为我们的“局域网内共享文件”做好了准备。
如果需要通过互联网访问,那么这里的 IP就要修改成你的公网 IP 或者动态域名了。
我这里还是以局域网为例子,对于的网址是 192.168.0.105:2016,从连着家里 WiFi 的手机上访问的
结果如下.
接下来是我们的重点:从局域网内共享内容(文字,图片等)
我们在下载安装 Caddy 时已经选择了「文件管理」模块 “filemanager”,
只需要在之前提到的 “Caddyfile” 中写入正确的配置,即可使用Caddy内置的文件管理器
在局域网或互联网上共享文件。
192.168.0.105:2016
filemanager /file {
show allow_new allow_edit
./file true true
}
比如像上面的配置代码(show 参数用来设置文件在电脑上对应的路径, allow_new、allow_edit
表示允许新建和修改),而 ./file 是文件夹的路径,你可以修改成其他路径。更多的配置说明,
可以参考文档- https://caddyserver.com/docs/caddyfile
在 Caddy 目录下新建一个“file”文件夹,在里面放入一些文件,再次重启 Caddy。
结语
因为 Caddy 的 “文件管理器” 内建支持新建文件和修改(修改应该只支持纯文本格式),
以及文件的下载和上传,相比常见的服务器软件比如 Nginx、Apache 等更能满足一般用户的文件共享需求,
比如:
在电脑端放入一个“.apk”文件,即可在 Android 设备下载并安装。
在手机端黏贴一段文本到一个文本文件中,即可在电脑端处理。
在手机端上传一张图片,即可在电脑端得到这张图片。
通过上传下载功能可以实现少量文件的拷贝等。
Caddy 可以在配置中设置任意的文件夹为共享文件夹,比较灵活。而且你不需要在手机端安装任何软件,
只需通过游览器访问即可。缺点是功能比较单一,在丰富性上显然无法与专门的软件相比。
不过在一些轻量级的使用场景,无论是自用还是与家人、同事使用还是比较方便的。
另外 Caddy 还有更多的功能,比如支持 “Markdown” 语法解析等。有兴趣的朋友可以在阅读官方文档-
https://caddyserver.com/docs进行了解.
--------------------------
Caddy 服务器
这是一个Web Server的时代,apache与nginx共舞,在追求极致性能的路上,没有最高,只有更高。但这又是一个追求个性化的时代,有些Web Server并没有去挤“Performance提升”这一独木桥,而是有着自己的定位,Caddy就是这样一个开源Web Server。
Caddy的作者Matt Holt在caddy官网以及FAQ中对caddy的目标阐释如下: 其他Web Server为Web而设计,Caddy为human设计。功能定位上,与经常充当最前端反向代理的nginx不同,caddy致力于成为一个易用的静态文件Web Server。可以看出Caddy主打易用性,使用配置简单。并且得益于Go的跨平台特性,caddy很容易的支持了三大主流平台:Windows、 Linux、Mac。在Caddy开发者文档中,我们可以看到caddy还可以在Android(linux arm)上运行。caddy目前版本为0.7.1,还不稳定,且后续版本可能变化较大,甚至与前期版本不兼容,因此作者目前不推荐caddy在生产环境被 重度使用。
Caddy 是一个支持 HTTP/2 的跨平台 Web 服务器,使用和配置都非常简单。Caddy 支持 HTTP/2, IPv6, Markdown, WebSockets, FastCGI, 模板等等。
One-step installer script (bash):
curlhttps://getcaddy.com | bash
配置信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#=> Caddyfile配置 https://caddyserver.com/docs/caddyfile
##########################
# 多站点 #
##########################
#=> Vue2.0站点 → port:2000
localhost:2000,
http://vue-2-demo.com {
# 站点物理路径
root ../../../Users/lxbin/Documents/WWW/vue-2.0-demo/dist
# log日志输出路径
#log ../log/localhost-2000.log
# 开启gzip
#gzip
}
#=> 9X_WAP站点 → port:8000
localhost:8000,
http://m2.test.jiuxiulvxing.com {
# 站点物理路径
root ../../../Users/lxbin/Documents/WWW/9X_WAP/
# log日志输出路径
log ../log/localhost-8000.log
# 开启gzip
#gzip
}
##########################
# 反向代理 #
##########################
#=> 反向代理 → port:80
#http://leo.xuebin.leo {
# proxy / localhost:80
# log ../log/proxy-port-80.log
#}
#=> 反向代理 → port:8080
#http://leo.xuebin.leo {
# proxy / localhost:8080
# log ../log/proxy-port-8080.log
#}
#http://leo.xuebin.leo {
# proxy / localhost:8000
# log ../log/proxy-port-8000.log
#}
##########################
# 文件服务器 #
##########################
#=> 文件服务器,指定文件服务器地址
192.168.100.126:1000
filemanager / {
# 文件目录地址
show ../../../Users/lxbin/Documents/WWW/
# 是否可以新建
allow_new true
# 是否可以修改
allow_edit true
}
##########################
# 异常处理 #
##########################
errors {
log ../log/error.log
404 404.html # Not Found
500 500.html # Internal Server Error
}
-------------------------------------
No comments:
Post a Comment