2019-12-25 21:48:39
Caddy 简单反向代理
参考:https://zixizixi.cn/caddyserver-r-proxy-https
一、获取Caddy
https://github.com/caddyserver/caddy/releases
# 目前2.0 还处于beta 阶段,1.0.4 为最新稳定版
wget https://github.com/caddyserver/caddy/releases/download/v1.0.4/caddy_v1.0.4_linux_amd64.tar.gz
# 安装Caddy 到本地命令
tar xf caddy_v1.0.4_linux_amd64.tar.gz
sudo mv caddy /usr/local/bin/
# 清理解压产生的多余文件
rm -rf CHANGES.txt LICENSES.txt README.txt init/ caddy_v1.0.4_linux_amd64.tar.gz
二、配置Caddy
当前目录下创建文件Caddyfile
# us2.suzhi82.tk 需先在DNS SERVER 上设置好对应服务器的IP,否则https 证书无法申请
# 使用https 进行反向代理服务器上127.0.0.1:8000 这个服务,默认80 会转到443 端口
https://us2.suzhi82.tk {
gzip
proxy / 127.0.0.1:8000/
}
# 如果只想使用http 进行反向代理,默认只开启80 端口
http://us2.suzhi82.tk {
gzip
proxy / 127.0.0.1:8000/
}
三、启动Caddy
# caddy 会默认读取当前目录下的Caddyfile
sudo caddy # Email 可不写,直接回车即可
解决:WARNING: File descriptor limit 1024 is too low for production servers.
# 查看系统参数
ulimit -a
# 修改系统open files 限制,默认1024
ulimit -n 8192
# 再次启动Caddy 就不会有生产环境的Warming 了
sudo caddy
四、反向代理样例演示
# python3.8 + virtualenv + Django2.2.3
# 创建虚拟环境并安装Django
cd && mkdir venvs && cd venvs
virtualenv testenv
source testenv/bin/activate
pip install django==2.2.3
# 创建Django 项目并启动
django-admin startproject testproj
cd testproj
python manage.py runserver
# 至此就启动了一个只有服务器自己才能访问的127.0.0.1:8000 服务
# 新建一个终端,通过Caddy 反向代理以上服务到公网
cd && cat > Caddyfile << EOF
https://us1.suzhi82.tk {
gzip
proxy / 127.0.0.1:8000/
}
EOF
ulimit -n 8192 # 参上,执行一次即可
sudo caddy # Email 可不写,直接回车
------------------------------------------------------
Finish!