文档
示例
1 | localhost { |
注意
- 如果监听端口是 80 或不设置端口(默认监听 80),那么在处理请求时,看做 http 协议请求
- 如果监听端口是非 80,那么请求被当做 https 协议请求
- 显式指定 http 协议,那么请求看做 http 协议处理
1 | example.com { ... } # http 协议 |
问题
跳转时端口丢失
原因是服务再返回请求设置 header 的 Location 字段时,没有把端口加进去,导致的现象是访问 http://doc.example.com:85
服务跳转到 http://doc.example.com/index
,由于端口丢失,导致无法访问。
从两个思路解决问题。
- 服务端,在返回时设置 header 的 Location 把 port 加上(
http://doc.example.com:85/index
) - 代理服务器处理,处理方式是替换 response header 的 Location,加上端口
下面是 Caddy 的配置示例。
1 | header_down Location "^(http://doc.example.com)(.*)$" "$1:85$2" |
- header_down,修改 response 的 header。相反,header_up 是修改请求 header
- Location,response header 字段
"^(http://doc.example.com)(.*)$"
, 匹配域名和 path"$1:85$2"
,在域名和 path 中间加端口