清爽脱俗的 Web 网络服务器 Caddy

原题目:清爽脱俗的 Web 网络服务器 Caddy 清爽脱俗的 Web 网络服务器 Caddy 依附于小编的服务端运用软件开发与系统软件构架,我厂以前一直应用 Nginx,但是其配备包含一些特点适用相比

原题目:清爽脱俗的 Web 网络服务器 Caddy

清爽脱俗的 Web 网络服务器 Caddy 依附于小编的服务端运用软件开发与系统软件构架,我厂以前一直应用 Nginx,但是其配备包含一些特点适用相比于 Caddy 稍显繁杂,能够参照小编的 Nginx 基本配备备忘(https://zhuanlan./p/24524057)。

01清爽脱俗的 Web 网络服务器 Caddy

做为新起 Web 网络服务器,Caddy 出示了许多简易实用的作用而沒有历史时间的负担,其默认设置适用而且能帮你全自动配备 HTTP/2、HTTPS,针对 IPV6、WebSockets 都是有非常好的适用。
根据 Go 撰写的 Caddy 与生俱来针对多核具备非常好的适用,而且其丰富多彩的软件系统软件出示了文档管理方法、文档提交、根据 MarkDown 的blog系统软件这些开箱即用的拓展作用。
关于企业网站建设报价

大家能够在官方网免费下载页面挑选你必须的软件作用订制个性化化二进制文档,免费下载结束以后就可以令其用caddy指令立即运作。其默认设置监视 2015 端口号,在访问器中开启 http://localhost:2015 就可以以查询其运作状况。大家还可以根据-conf主要参数特定配备文档:

$ caddy -conf="/path/to/Caddyfile"

下面大家会详尽详细介绍 Caddyfile 的配备英语的语法,Caddy 的一大特点取决于其应用说白了命令(Directives)来叙述作用开展配备,相比于 Nginx 或是 Apache 其配备会简单化许多。假如大家期待适用多配备文档,可使用import命令:

importconfig/common.conf

或是引进全部文档夹:

import../vhosts/*

02站点配备

典型性的 Caddyfile 配备文档以下所显示:

localhostgzipbrowsewebsocket /echo catext .htmllog /var/log/access.logproxy /api 127.0.0.1:7005header /api Access-Control-Allow-Origin *

每一个 Caddyfile 的第一行务必叙述其服务的详细地址:

localhost:2020

以后的每一行全是官方网出示的命令,例如大家必须为网络服务器加上 gzip 缩小适用,只必须立即加上一个命令:

localhost:2020gzip

大家可使用bind命令来特定当今网络服务器关联的详细地址:

bind hostbind 127.0.0.1

03虚似服务器

假如大家必须配备单独的虚似服务器,必须将配备信息内容移动到站训话以后的大括弧内:

mysite { root /www/mysite}sub.mysite { root /www/sub.mysite gzip log ../access.log}

留意,左括弧务必与站训话坐落于同一行,而右括弧则是务必单起一行。针对共享资源同样配备的站点,大家能够用分号来申明好几个站点:

localhost:2020, https://site, http://mysite { ...}

当 Caddy 检验到站训话合乎以下标准时候全自动应用 Let's Encrypt 脚本制作来为站点加上 HTTPS 适用,而且全自动监视 80 与 443 端口号:

服务器名不能为空而且沒有 localhost 与 IP 详细地址

端口号号未确立特定为 80

Scheme 未确立特定为 http

TLS 未被关掉

未指出资格证书

04缓存文件设定

大家能够根据 expires 命令来设定相比于恳求時间的到期头,其基本英语的语法为:

expires { match regex duration}

regex 是用以配对恳求文档的正则表达式表述式,而 duration 则是 0y0M0d0h0i0s 文件格式的叙述时间的表述式,常见的配对英语的语法为:

expires { match some/path/.*.css$ 1y # expirescss files insome/path after one year match .js$ 10m # expiresjs files after 30days match .png$ 1d # expirespng files after one day match .jpg$ 1h # expiresjpg files after one hour match .pdf$ 1i # expirespdf file after one minute match .txt$ 1s # expirestxt files after one second match .html$ 5i30s # expireshtml files after 5minutes 30seconds}

05反方向代理商

proxy 命令出示了基本的反方向代理商作用,其适用 Health Checks 及其 Failovers,而且适用针对 WebSocket 的反方向代理商。其基本英语的语法为:

proxy fromto

from 就是恳求配对的基本相对路径,to 则是恳求分享到的节点详细地址。大家还可以应用更繁杂的配备:

proxy fromto... { policy random | least_conn | round_robin | ip_hash fail_timeout duration max_fails integer try_duration duration try_interval duration health_check path health_check_interval interval_duration health_check_timeout timeout_duration header_upstream name value header_downstream name value keepalive number without prefix exceptignored_paths... upstream to insecure_skip_verify preset}

将全部寄往 /api 的恳求分享到后端开发系统软件:

proxy /api localhost:9005

应用任意对策将全部恳求负荷平衡到三个后端开发网络服务器:

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

应用循环系统体制:

proxy / web1.local:80web2.local:90web3.local:100{ policy round_robin}

加上身心健康查验而且全透明分享服务器名、详细地址与上下游:

proxy / web1.local:80web2.local:90web3.local:100{ policy round_robin health_check /health transparent}

分享 WebSocket 恳求:

proxy /stream localhost:8080{ websocket}

防止针对一部分静态数据恳求的分享:

proxy / backend:1234{ except/static /robots.txt}

06WebSocket

Caddy 內建适用 WebSocket 联接,其容许顾客端进行 WebSocket 联接的情况下顾客端实行某一简易的命令,其基本英语的语法以下:

websocket [path] command

大家能够在顾客端内搭建简易的 WebSocket 顾客端恳求:

if(window.WebSocket != undefined) { var connection = new WebSocket("ws://localhost:2015/echo"); connection.onmessage = wsMessage; connection.onopen = wsOpen; function wsOpen(event) { connection.send("Hello World"); } function wsMessage(event) { console.log(event.data); }}function wsMessage(event) { console.log(event.data);}

随后在服务端接受该恳求而且将顾客端键入的內容回到:

var readline = require('readline');var rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: false});rl.on('line', function(line){ console.log(line);})

最终 Caddy 文档配备以下:

websocket /echo "node tmp.js"

07文档提交

大家可使用 Caddy 出示的拓展命令 upload 来构建简易的文档提交网络服务器:

upload path { to "directory"yes_without_tls filenames_form none|NFC|NFD filenames_in u0000–uff00 [u0000–uff00| …] hmac_keys_in keyID_0=(binary) [keyID_n=(binary) | …] timestamp_tolerance 0..32silent_auth_errors}

立即加上以下配备:

upload /web/path { to "/var/tmp"}

随后应用 curl 提交文档:

# HTTP PUTcurl -T /etc/os-release https://127.0.0.1/web/path/from-release

或是同时提交好几个文档:

# HTTP POSTcurl -F gitconfig=@.gitconfig -F id_ed25519.pub=@.ssh/id_ed25519.pub https://127.0.0.1/web/path/

大家还可以应用命令来移动或是删掉这种文档:

# MOVE is 'mv'curl -X MOVE -H "Destination: /web/path/to-release"https://127.0.0.1/web/path/from-release# DELETE is 'rm -r'curl -X DELETE https://127.0.0.1/web/path/to-release

08浏览操纵

Basic Auth

Caddy 內建适用 HTTP Basic Authentication,可以强制性客户应用特定的客户名与登陆密码浏览一些文件目录或是文档。其基本配备英语的语法以下:

basicauth username password { resources}

假如大家期待为 /secret 文件目录下全部文档加上管理权限验证:

basicauth /secret Bob hiccup

还可以指出一些文档:

basicauth "Mary Lou"milkshakes { /notes-for-mary-lou.txt /marylou-files /another-file.txt}

JWT

jwt 命令是 Caddy 的拓展作用,大家必须在官方网站上挑选加上该作用而且获得编译程序后的版本号,其基本英语的语法为:

jwt path// 或是jwt { path resource allow claim value deny claim value}

例如大家预置了2个令牌:user: someone 与 role: member ,大家的配备项以下:

jwt { path /protected deny role member allow user someone}

该正中间件会回绝全部 role: member 的浏览,除开客户名叫 someone 的客户。而另外一个 role: admin 或是 role: foo 的客户则能够一切正常浏览。大家能够根据三种方法来递交令牌:

MethodFormatAuthorization HeaderAuthorization: Bearer tokenCookie"jwt_token": tokenURL Query Parameter/protected?token=token

09跨域恳求

大家可使用 cors 命令来为网络服务器加上跨域恳求的工作能力:

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

大家还可以加上 JSONP 的适用:

jsonp /api/status

例如某一节点回到相近于{"status":"ok"}那样的 JSON 响应,恳求文件格式以下:

$ wget 'http://example/api/status?callback=func3022933'

其会回到以下文件格式的响应:

func3022933({"status":"ok"});

10详细地址过虑

大家可使用 ipfilter 命令来根据客户的 IP 来容许或是限定客户浏览,其基本英语的语法为:

ipfilter paths... { rule block | allow ip list or/andrange of IPs... country countries ISO codes... database db_path blockpage block_page strict}

仅容许某一 IP 浏览:

ipfilter / { rule allow ip 93.168.247.245}

严禁每段 IP 详细地址与某一实际的 IP 浏览,而且向她们回到默认设置页面:

ipfilter / { rule block ip 192.168.0.0/162E80::20:F8FF:FE31:77CF/165.23.4.24blockpage /local/data/default.html}

仅容许来源于荷兰的视线固定不动 IP 详细地址的顾客端浏览:

ipfilter / { rule allow country FR database /local/data/GeoLite2-Country.mmdb ip 99.23.4.242E80::20::FEF1:91C4}

仅适用来源于英国与日本国的顾客端浏览:

ipfilter / { rule allow country US JP database /local/data/GeoLite2-Country.mmdb}

严禁来源于英国与日本国的顾客端针对 /notglobal 与 /secret 的浏览,立即回到默认设置详细地址:

ipfilter /notglobal /secret { rule block country US JP database /local/data/GeoLite2-Country.mmdb blockpage /local/data/default.html}

11恳求过流保护

大家可使用 ratelimit 这一拓展命令来为資源加上恳求过流保护的作用,针对单資源可使用以下命令:

ratelimit path rate burst unit// 限定顾客端每秒钟数最多针对 /r 資源进行2个恳求,突发性限制数最多为 3个ratelimit /r 23second

针对多資源可使用以下命令:

ratelimit rate burst unit { resources}// 限定针对資源文档的浏览时间为 2分鐘ratelimit 21minute { /foo.html /dir}

✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦

创作者:王下邀月熊全文:

https://zhuanlan./p/25850060

点一下“阅读文章全文”,看大量

优选文章内容

↓↓↓回到凡科,查询大量

义务编写:

  • 一钟头“呼”你3600遍!“

    模拟题目:一小时“呼”你3600遍!“呼死你”:88元便可以初学者新手入门,目前将被“一锅端” 先前,我国国家工信部下达《相关促进综合性性整治搔扰电话关键行动的工作中中方案

  • 公司企业网站建设常见的

    模拟题目:企业公司企业网站建设普遍的八个标准 以前,企业基建项目网站只高度重视网站的呈现,关注视觉效果实际效果具体实际效果,而实际上的营销推广营销推广性则太弱。企业

  • php程序猿全是从构建blog或

    15.管理方法员杂类.mp4 16.无尽级归类:数据信息表及页面.mp4. E3 j/ h% j/ b4 M+ R5 A 17.无尽级归类:频道加上作用.mp4 18.无尽级归类:无尽级显示信息.mp48 I# U, u$ O) @! P% F( w! R 19.无尽级归类:

  • 陈金凌:阿里巴巴云服务器

    模拟题目:陈金凌:阿里巴巴巴巴云服务器器器技术性性可省至30/年,国外免备案空间室内空间互联网网络服务器技术性性可省至15/年 2018新年新风貌,希望与让你机会合作! 阿里巴巴巴

  • SEO站群系统系统软件哪一

    原题目:SEO站群系统系统软件哪一个好? 近些年来,越来越越大的人较为亲睐于做站群系统,站群系统不但省时省劲,并且针对一些基本的提升方式是是非非经常出现效的,现阶段市面