配置实例2 – 适用于Caddy2

By | 2021-06-03

情景1 : 单一域名实现域名二级目录分流  【反向代理】 

app.abc.com/1  分流至 192.168.0.100:8080

app.abc.com/2 分流至 192.168.0.200:9090

利用/1 /2 以目录形式反向代理分流不同的服务,当然也可以改为本地服务或本地目录

配置如下:

http://app.abc.com {
        log {
                output file /var/log/caddy/caddy.log {
                   roll_size 50mb
                   roll_keep 5
                   roll_keep_for 80h
                }
        }
                reverse_proxy /1* 192.168.0.100:8080 {
                        header_up Host app.abc.com
                        header_up X-Real-IP {http.request.remote.host}
                        header_up X-Forwarded-For {http.request.remote.host}
                        header_up X-Forwarded-Port {http.request.port}
                        header_up X-Forwarded-Proto {http.request.scheme}
                }
                reverse_proxy /2* 192.168.0.200:9090 {
                        header_up Host app.abc.com
                        header_up X-Real-IP {http.request.remote.host}
                        header_up X-Forwarded-For {http.request.remote.host}
                        header_up X-Forwarded-Port {http.request.port}
                        header_up X-Forwarded-Proto {http.request.scheme}
                }
}

反向代理相关配置说明:

代理所有转发请求
abc.com
reverse_proxy 192.168.0.100:8080

代理/test/路径的请求到指定地址

abc.com
root * /var/www <- 根目录在本地/var/www,可以改变或转发
file_server
reverse_proxy /test/* 192.168.0.100:8080 <- 当有abc.com/bin的请求时转发

更多配置实例可参考: 这个网站

常用配置说明:

PHP请求转发
例如:Wordpress是需要PHP FastCGI运行环境的,可以转发到目标服务器进行解释
abc.com
root * /var/www
php_fastcgi /wp/* 192.168.0.200:9090 <- 这里是WP服务器上fastcgi的服务端口
file_server

说明: 当站点路径*和访问路径/wp/*有访问请求时,Caddy会分流*到/var/www本地目录,/wp/*会分流到指定的fastcgi端口,但php_fastcgi只会针对PHP单一入口index.php

重定向子域配置说明:
abc.com {
    redir http://www.abc.com{uri}
}

www.abc.com {
    root * /var/www
}
当用户浏览器访问abc.com时会自动转到www.abc.com。当DNS记录设定主域接受用户任何任意子域名时,都会跳转到www.abc.com

内部强制重写
abc.com
rewrite /kk /kk/   <- 代表强调末尾加斜线
rewrite /wp/ /wp     <- 代表强制末尾减斜线
变量形式:
rewrite {
    to {path} {path}/ /
}

外部强制重定向
abc.com
redir /kk /kk/   <- 直接重定向为abc.com/kk/

重定向例子1:
    # 先让rewrite过滤掉需要redir的路径
     rewrite {
        if {path} not /wp/test1
        if {path} not /wp/img/test2.html
        to {path} {path}/ /    
    }

    # 先执行rewrite,再执行redir
    redir 301 {
        /wp/test1 /wp/test1/index.php
        /wp/img/test2.html /wp/test1/index.php
    }
重定向例子2:
https://app.example.com {
route {
rewrite / /web{uri}
reverse_proxy * 192.168.15.122:443 {
header_up Host app.example.com
header_up X-Forwarded-Proto https
transport http {
tls_insecure_skip_verify
}
}
}
}

發佈回覆