Debian9安裝配置CaddyServer
Caddy 是一個用 Golang 開發的高效 Web Server,相比 Nginx,它的配置和使用要簡單很多,能自動開啟 HTTPS、並且支援 HTTP/2 和 QUIC。
下載安裝 Caddy
首先去 Download Caddy 選擇你需要的外掛,然後複製下方的 One-step installer script (bash)
,例如我的是
$ curl https://getcaddy.com | bash -s http.cache,http.cors,http.expires,http.filemanager,http.git,http.ipfilter,http.minify,http.nobots,http.ratelimit,http.realip,tls.dns.cloudflare
安裝完後輸入 which caddy
,不出意外的話會輸出 /usr/local/bin/caddy
至此,安裝完畢,但是目前它不會開機自啟,只是簡單地把二進位制檔案下載下來,所以下一步要註冊服務。
註冊服務到Systemd
這裡我使用的是官方提供的指令碼 caddy.service,其他系統也可以在這裡找到相應的指令碼。
把這個檔案下載到 /etc/systemd/system/
。
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
建立所需目錄,我圖方便沒有修改指令碼直接使用預設值了,如果有特殊需求,可以自己更改目錄。
sudo mkdir /etc/caddy sudo chown -R root:www-data /etc/caddy sudo touch /etc/caddy/Caddyfile sudo mkdir /etc/ssl/caddy sudo chown -R www-data:root /etc/ssl/caddy sudo chmod 0770 /etc/ssl/caddy sudo mkdir /var/www sudo chown www-data:www-data /var/www
上面建立了三個目錄,/etc/caddy
用了存放 Caddy 的配置檔案,/etc/ssl/caddy
存放證書,/var/www
是預設的網站目錄。
接著,重新載入 systemd daemon
,讓配置生效。
sudo systemctl daemon-reload
讓 Caddy 開機自啟:
sudo systemctl enable caddy.service
至此,Caddy 已經成功註冊服務,並能夠開機自動執行了。
配置Caddy
這部分的內容我不打算詳細記錄,主要是官方文件已經寫的很詳細了。下面是我的配置,
example.com { proxy / 127.0.0.1:9001 { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Proto {scheme} } gzip header / -Server header / Strict-Transport-Security "max-age=31536000;" tls user@example.com { protocols tls1.0 tls1.2 dns cloudflare } }
如果要使用 DNS 的方式認證域名的話,需要設定環境變數,修改 /etc/systemd/system/caddy.service
,加入環境變數,我使用的是 CloudFlare 的 DNS,所以我需要新增 CLOUDFLARE_EMAIL
和 CLOUDFLARE_API_KEY
,其他 DNS 看這裡。
[Service] ... Environment=CADDYPATH=/etc/ssl/caddy + Environment=CLOUDFLARE_EMAIL=xxx + Environment=CLOUDFLARE_API_KEY=xxx ...
寫完配置後輸入 sudo systemctl start caddy.service
啟動 Caddy。輸入 journalctl --boot -u caddy.service
可以檢視日誌。
啟用 QUIC
關於 QUIC 的介紹,可以看一下這篇文章,一句話概況呢就是減少 TLS 握手次數,加快網站速度。
修改 /etc/systemd/system/caddy.service
,在 ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
後面加上 -quic
,即
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp -quic
然後重新載入 Systemd,並重啟 Caddy
sudo systemctl daemon-reload && sudo systemctl restart caddy.service
同時,別忘了給主機開放 443 (UDP) 埠。
目前 QUIC 只有 Chrome 支援,並且需要手動開啟(預設只有白名單域名啟用)。訪問 chrome://flags/#enable-quic
,切換為 Enabled 即可。開啟後,重啟 Chrome,訪問網站,通過 Chrome DevTools – Security 可以看到協議已經是 QUIC 了。
關於效能
Caddy 是 Go 寫的,效能方面是稍落後於 Nginx 的,但其實對於小站來說,這一點效能差距是可以忽略的,畢竟 You Are Not Google 。
相關文章
- Debian9(Stretch) 下編譯安裝LNMP環境編譯LNMP
- Debian9 (Stretch) 下編譯安裝 LNMP 環境編譯LNMP
- debian9安裝指定版本gitlab,並實現備份還原Gitlab
- 本地windows搭建spark環境,安裝與詳細配置(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)WindowsSparkJDKHadoop
- centos7 (阿里雲、linux) 單機spark的安裝與配置詳解(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)CentOS阿里LinuxSparkJDKHadoop
- leanote安裝配置
- JENKINS安裝配置Jenkins
- oracle安裝配置Oracle
- ceph安裝配置
- 【mongodb安裝配置】MongoDB
- ELK 安裝配置
- 安裝配置ETCD
- SwitchOmega 安裝配置
- MySQL安裝配置MySql
- JWT安裝配置JWT
- Prometheus安裝配置Prometheus
- MariaDB 安裝配置
- ccache安裝配置
- alertmanager安裝配置
- VNC安裝配置VNC
- Hive安裝配置Hive
- Zookeeper 安裝配置
- SSH免密登入+JDK安裝配置+Hadoop安裝配置JDKHadoop
- CentOS 7 安裝、配置、使用 PostgreSQL 10 安裝及基礎配置CentOSSQL
- Linux下安裝java及配置(yum安裝)LinuxJava
- Mysql for Linux安裝配置之—— rpm(bundle)安裝MySqlLinux
- Mysql for Linux安裝配置之—— 原始碼安裝MySqlLinux原始碼
- MySQL安裝之二_安裝配置泥潭版MySql
- CentOS安裝配置yumCentOS
- CentOS redis安裝配置CentOSRedis
- Jenkins安裝及配置Jenkins
- Supervisor安裝與配置
- Nginx安裝與配置Nginx
- pip安裝源配置
- zabbix的安裝配置
- hbase 2.0.2安裝配置
- MongoDB安裝配置教程MongoDB
- 【Python】安裝配置gymPython