- 創建目錄(在root目錄下)
$ mkdir -p caddy/{conf,logs,www} $ cd caddy
- 配置Caddyfile
$ vi conf/Caddyfile
www.?????.net { gzip root /opt/www timeouts 30s log /opt/logs/access.log proxy /other localhost:8080 }
www.?????.net { gzip root /opt/www timeouts 30s log /opt/logs/access.log proxy / localhost:8080 #根url 直接代理轉發 proxy /more localhost:8081 localhost:8082 #負載均衡 }
以上是在配置公網域名後的配置,還沒有配置域名?那直接用 IP 就行,如下
192.168.1.2:80 192.168.1.2:443 { gzip root /opt/www tls self_signed #自動簽名,很重要 timeouts 30s log /opt/logs/access.log proxy /other localhost:8080 }
相信很多人會和我一樣,caddy是在 虛擬機 上部署,但是訪問卻在物理機上,如果按照網上的一些配置文檔,隨便編寫一個域名,就會無法訪問,不在同一個環境了,物理機上輸入自定義的域名是不可能解析出ip訪問到你的虛擬機的。
- 配置docker-compose.yml
$ vi docker-compose.yml
version: '3.3' services: # http/2 server caddy: image: abiosoft/caddy:latest container_name: caddy hostname: caddy domainname: caddy restart: always network_mode: "host" environment: - TZ=Asia/Shanghai - agree - email [email protected] volumes: - "/root/caddy/conf/Caddyfile:/etc/Caddyfile" - "/root/caddy/.caddy:/root/.caddy" - "/root/caddy/logs:/opt/logs" - "/root/caddy/www:/opt/www" ports: - 80:80 - 443:443
1、配置上海時區
2、同意caddy自動配置ssl證書
3、caddy需要的反饋郵箱
注意,如果自定義了自己的目錄結構,這裏的數據卷 volumes 下的配置也要對應你自己的目錄結構
- 啓動
$ docker-compose up -d $ docker logs -f caddy # 查看日誌
# 安裝docker-compose $ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 添加目錄權限 $ sudo chmod +x /usr/local/bin/docker-compose # 驗證docker-compose安裝是否成功 $ docker-compose --version
- 測試
隨便複製個文件到 www 目錄下,我複製了個圖片bg.jpg,
然後輸入 https://192.168.1.2/bg.jpg
在火狐瀏覽器打開後是這樣的(自己生成的證書不被信任),點擊高級,繼續訪問便可
- 相關命令
$ docker-compose up # 前臺啓動容器,命令退出時,所有容器都將停止 $ docker-compose up -d # 在後臺啓動容器並使它們保持運行 $ docker logs -f [container_id] # 查看某一容器的啓動的日誌打印(日誌從頭打印) $ docker logs -f --tail [數量] [container_id] # 查看某一容器的啓動的日誌打印(查看最後n條日誌打印)。 例:docker logs -f --tail 50 44b $ docker-compose stop # 停止compose服務 $ docker-compose restart # 重啓compose服務 $ docker-compose kill # kill compose服務 $ docker-compose ps #查看compose服務狀態 $ docker-compose rm #刪除compose服務
CentOS 7 環境,親測可用!!!