Định tuyến route trong Caddy server

26 Likes Comment

Nếu trong nginx có cấu hình theo localtion thì caddy có cấu hình route để tiến hành phân lập các cấu hình riêng biệt cho từng vị trí, từng patch khác nhau của website

Có một ví dụ như sau: Nếu một website có nhiều hệ thống backend được gọi theo bảng thứ tự bên dưới

Tênđường dẫn truy cậpđường dẫn mong muốn
API 1backend_1:9000domain.com/api1
API 2backend_2:9000domain.com/api2

Nếu với nginx chúng ta sẽ dùng cấu hình localtion để trỏ cấu hình reverse proxy cho api thì ở caddy việc này được giải quyết qua cấu hình của route. chúng ta sẽ cấu hình theo bản phía trên như sau với route như sau

route {
	reverse_proxy backend_1:9000
}

Thêm vào cấu hình trong seri này chúng ta có một route cho đường dẫn caddy.manhtuong.net/api như sau

{
        order coraza_waf first
}

(cors) {
  @cors_preflight method OPTIONS
  @cors header Origin {args.0}

  handle @cors_preflight {
    header Access-Control-Allow-Origin "{args.0}"
    header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"
    header Access-Control-Allow-Headers "Content-Type"
    header Access-Control-Max-Age "3600"
    respond "" 204
  }

  handle @cors {
    header Access-Control-Allow-Origin "{args.0}"
    header Access-Control-Expose-Headers "Link"
  }
}

caddy.manhtuong.net {
        coraza_waf {
                include /etc/caddy/waf/config.conf
                include /etc/caddy/waf/whitelist.conf
                include /etc/caddy/waf/coreruleset/crs-setup.conf.example
                include /etc/caddy/waf/coreruleset/rules/*.conf
        }
        import cors https://caddy.manhtuong.net
        route {
                rate_limit {body.id} 200r/m
        }
        route /api1/* {
	        reverse_proxy backend_1:9000
        }
        route /api2/* {
	        reverse_proxy backend_2:9000
        }
        file_server {
	        hide .git
        }
        root * /home/caddy/web
        php_fastcgi unix//run/php/php7.4-fpm.sock
        log {
                output file /home/caddy/caddy.manhtuong.net.log
        }
}

các bạn thay đổi api thành các thông tin mà các bạn cấu hình nó

caddy với route mình cũng có thể dùng nó để chuyển hướng tới một website thông qua cấu hình redir như sau

route /api/* {
	redir https://anothersite.com{uri}
}

Áp vào cấu hình của chúng ta thì sẽ được một cấu hình như sau:

{
        order coraza_waf first
}

(cors) {
  @cors_preflight method OPTIONS
  @cors header Origin {args.0}

  handle @cors_preflight {
    header Access-Control-Allow-Origin "{args.0}"
    header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"
    header Access-Control-Allow-Headers "Content-Type"
    header Access-Control-Max-Age "3600"
    respond "" 204
  }

  handle @cors {
    header Access-Control-Allow-Origin "{args.0}"
    header Access-Control-Expose-Headers "Link"
  }
}

caddy.manhtuong.net {
        coraza_waf {
                include /etc/caddy/waf/config.conf
                include /etc/caddy/waf/whitelist.conf
                include /etc/caddy/waf/coreruleset/crs-setup.conf.example
                include /etc/caddy/waf/coreruleset/rules/*.conf
        }
        import cors https://caddy.manhtuong.net
        route {
                rate_limit {body.id} 200r/m
        }
        route /api/* {
	        redir https://anothersite.com{uri}
        }
        file_server {
	        hide .git
        }
        root * /home/caddy/web
        php_fastcgi unix//run/php/php7.4-fpm.sock
        log {
                output file /home/caddy/caddy.manhtuong.net.log
        }
}

Như vậy khi người dùng truy cập caddy.manhtuong.net/api sẽ được chuyển hướng tới anothersite.com với patch được giữ nguyên

0 0 votes
Article Rating

You might like

Avatar

About the Author: Vô Ưu

Xin chào! Tôi là Vouu, người sáng lập blog này. Tôi là một người yêu thích. Tôi có một công việc ban ngày với tư cách là một chuyên viên bơm vá săm xe các loại, và trang web này là một trong những hoạt động yêu thích của tôi, đặc biệt là trong những lúc rảnh rỗi. Hy vọng bạn thích sử dụng trang web này, và nó sẽ mang lại cho bạn nhiều điều bổ ích. Phản hồi từ người đọc sẽ truyền cảm hứng cho tôi để tôi có thể viết được nhiều hơn nữa !. Bạn chỉ cần để lại nhận xét bên dưới nếu bạn thấy bài viết này hữu ích. Chúc bạn ngày mới tốt lành!
Subscribe
Notify of
guest
0 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x