简单粗暴的Caddy Server 使用介绍

Caddy是一个Go写的服务器软件,官方的宣传语“The HTTP/2 web server with automatic HTTPS”以及“Serve The Web Like It's 2016”简明表达了这个软件的优点和趋势,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如:

HTTP/2
Automatic HTTPS
Multi-core
Websockets
Markdown
IPv6
Git
…...
用Caddy我们就可以很方便的部署一个Markdown文本作为静态网站访问,或者它的Git指令完成代码的自动化部署,当然它很大的特色就是它的语法非常简洁,比nginx还要简单,配置部署起来很方便,下面随便举几个例子吧。

对网站添加BasicAuth,用户名ryan,密码 12345

basicauth / ryan 12345

用CORS解决跨域问题

cors / {
    origin            http://allowedSite.com
    origin            http://anotherSite.org https://anotherSite.org
    methods           POST,PUT
    allow_credentials false
    max_age           3600
    allowed_headers   X-Custom-Header,X-Foobar
    exposed_headers   X-Something-Special,SomethingElse
}

IP过滤

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

HTTPS 配置
tls ../cert.pem ../key.pem
实在太简单了配置起来,具体还有其他简洁到哭的指令可以看官方的User Guide,很快就刷完了。

既然Caddy自动部署https,而且是通过Let's Encrypt,那么就实践一下,本博客是用Ghost 搭建,Nginx代理的,现在就改用Caddy,并支持https,步骤大体如下:

证书申请请移步 Let's Encrypt
Caddy 安装很简单,直接下载 https://caddyserver.com/docs/getting-started
配置Caddyfile,看起来指令简洁明了

https://www.yuansir-web.com, http://www.yuansir-web.com, http://yuansir-web.com {
 redir https://yuansir-web.com{uri}
 tls yuansir88@gmail.com
}

https://yuansir-web.com {
 gzip
 errors {
  log /var/log/caddy/yuansir-web.error.log {
    size 50
    age 30
    keep 5
  }
 }
 log /var/log/caddy/yuansir-web.access.log
 tls yuansir88@gmail.com
 proxy / http://127.0.0.1:2368 {
  proxy_header X-Real-IP {remote}
  proxy_header HOST {host}
  proxy_header X-Forwarded-Proto {scheme}
 }
}

用supservisor来管理Caddy运行

[program:caddy]
command=/usr/bin/caddy -conf="/var/www/Caddyfile"
directory=/var/www  ; directory to cwd to before exec (def no cwd)
autostart=true    ; start at supervisord start (default: true)
autorestart=unexpected  ; whether/when to restart (default: unexpected)
startsecs=1     ; number of secs prog must stay running (def. 1)
startretries=3    ; max # of serial start failures (default 3)
exitcodes=0,2     ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT    ; signal used to kill process (default TERM)
stopwaitsecs=10    ; max num secs to wait b4 SIGKILL (default 10)
stopasgroup=false    ; send stop signal to the UNIX process group (default false)
user=www    ; setuid to this UNIX account to run the program
redirect_stderr=true   ; redirect proc stderr to stdout (default false)
stdout_logfile=/var/log/caddy.log  ; stdout log path, NONE for none; default AUTO
stderr_logfile=/var/log/caddyerr.log  ; stderr log path, NONE for none; default AUTO

将网站的静态资源CDN换成支持https的CDN
好了,就这么简单,Nginx切换成Caddy,并支持https了,真是多快好省。

(0)

相关推荐

  • 简单粗暴的Caddy Server 使用介绍

    Caddy是一个Go写的服务器软件,官方的宣传语"The HTTP/2 web server with automatic HTTPS"以及"Serve The Web Like It's 2016"简明表达了这个软件的优点和趋势,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如: HTTP/2 Automatic HTTPS Multi-core Websockets Markdown IPv6 Git -...

  • nginx简单配置多个server的方法

    1:安装nginx步骤就不说了 ,自行百度. 2:打开nginx的配置文件nginx.conf 这是项目1的配置,现在需要再开个同域名不同端口的项目,如下图: 注意:LZ一直出现访问不了,折腾了许久,是因为服务器www.pigaudio.com或120.77.223.7只开了默认的80端口,而8088端口并未开,所以只需要登陆你的服务账号添加一个8088即可,比如你的服务器是阿里云购买的,则需要登陆阿里云加一个8088,还有问题就是,如果你服务器打开了网络防火墙也是访问也是不行的,关了即可. 到

  • js简单粗暴的发布订阅示例代码

    什么是发布/订阅? 我打个比方,你去某个门店买衣服,你和门店店长相互并不认识,门店店长只管卖他的衣服,并不关心是谁来买,而你也只管买你想要的衣服,并不关心是哪个门店在卖,这时,门店和你就组成了一个发布/订阅的关系. 当门店挂出衣服款式,你去找你想要的衣服,如果找到了,那就买下来,如果没找到,那就离开这家店.整个过程就是这么简单. 使用场景 异步通信.多页面间相互通信,pageA 的方法想在 pageB的方法调用的某个时机触发 直接上代码 class Publish { constructor()

  • Golang简单实现http的server端和client端

    介绍 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议. HTTP和HTTPS的区别 HTTPS是加密传输协议,HTTP是名文传输协议 HTTPS需要用到SSL证书,而HTTP不用 HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO HTTPS标准端

  • C语言 简单粗暴的笨方法找水仙花数

    什么是水仙花数: 指一个n位数,其各位数字的n次方之和确好等于该数本身 例如:    1         1^1=1: 153      3^3+5^3+1^3=153; 问题:求0~100000之间的水仙花数,并打印出来 看题目,找突破口: 0~100000  我可以想到用循环来判断0~10000间的数字 由栗子可知:我们需要求数字是几位 要用到次方,则我们需要引用math函数库里的pow函数 求和,依旧要使用循环 那么开始写代码,走一步思考一步: #include <stdio.h> #i

  • java报错:找不到或无法加载主类的解决方法简单粗暴

    当我们在windows系统下安装完jdk时,测试案例HelloWorld:运行java命令时报错:找不到或无法加载主类 解决方法: 1.首先检查是否编译通过,生成了.class字节码文件 如果没有生成.class字节码文件,则需要执行javac编译命令编译源文件. 执行命令javac H:\javatest\HelloWorld.java(javac表示jdk内置编译命令:H:\javatest\HelloWorld.java表示源文件所在路径,这里我的测试源文件是位于H盘下,自己决定) 2.如

  • c++实现超简单的贪吃蛇游戏实例介绍

    目录 设计思路 实现代码 效果 设计思路         建议先将代码复制下来跑一遍再来看思路!!!         通俗易懂,请仔细看.         值得注意的是我给出的代码没有加墙体,如有需要自己添加.         也没有难度设计,同上. 地图大小(这里设计了墙体,代码中未实现) 设置一个整形数组map,其大小为1600,对应着地图的大小为1600,并初始化数组,令数组中的值全为0,0代表空地. 我们通过设定窗口的宽度为80,打印时每个map[i] 所对应的字符占两格位置即可实现每打

  • Python中的XML库4Suite Server的介绍

    在继续阅读本文之前,您务必要对我们在本专栏中将要讨论的一些技术有所了解.我们要使用的技术包括:可扩展的样式表语言转换(Extensible Stylesheet Language Transformations,XSLT).XML 路径语言(XML Path Language,XPath)和资源描述框架(Resource Description Framework,RDF).在 参考资料部分有到关于所有这些技术的信息的链接. 4Suite Server 概述 我们将使用由本文作者参与开发的 XM

  • SQL SERVER 触发器介绍

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

  • SQL Server 索引介绍

    一,索引的概述 1,概念: 数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力. 2,优缺点: 2.1优点: 1,大大加快搜索数据的速度,这是引入索引的主要原因. 2,创建唯一性索引,保证数据库表中每一行数据的唯一性. 3,加速表与表之间的连接,特别是在实现数据的参考完整性方面特别有意义. 4,在使用分组和排序子句进行数据检索时,同样可以减少其使用时间. 2,2缺点: 1,索引需要占用物理空间,聚集索引占的空间更大. 2,创建索引和维

随机推荐