x
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -2711,6 +2711,7 @@ dependencies = [
|
|||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ serde = { workspace = true }
|
|||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
bytes = { workspace = true }
|
bytes = { workspace = true }
|
||||||
axum = { workspace = true }
|
axum = { workspace = true }
|
||||||
|
tracing = { workspace = true }
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ use axum::{
|
|||||||
Router, body::Body as AxumBody, extract::State, response::Response as AxumResponse,
|
Router, body::Body as AxumBody, extract::State, response::Response as AxumResponse,
|
||||||
routing::any,
|
routing::any,
|
||||||
};
|
};
|
||||||
|
use tracing::{debug, warn};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use futures_core::Stream;
|
use futures_core::Stream;
|
||||||
use reqwest::{Client, StatusCode, header};
|
use reqwest::{Client, StatusCode, header};
|
||||||
@@ -262,6 +263,7 @@ async fn proxy_handler(
|
|||||||
let method = req.method().clone();
|
let method = req.method().clone();
|
||||||
|
|
||||||
let url = format!("{}{}{}", state.base_url, path, query_str);
|
let url = format!("{}{}{}", state.base_url, path, query_str);
|
||||||
|
debug!(method = %method, url, "proxying request");
|
||||||
let mut req_builder = state.client.request(method, &url);
|
let mut req_builder = state.client.request(method, &url);
|
||||||
|
|
||||||
// Forward all request headers except hop-by-hop and Host.
|
// Forward all request headers except hop-by-hop and Host.
|
||||||
@@ -286,6 +288,7 @@ async fn proxy_handler(
|
|||||||
let upstream = match req_builder.send().await {
|
let upstream = match req_builder.send().await {
|
||||||
Ok(r) => r,
|
Ok(r) => r,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
warn!(error = %e, "upstream request failed");
|
||||||
return AxumResponse::builder()
|
return AxumResponse::builder()
|
||||||
.status(StatusCode::BAD_GATEWAY.as_u16())
|
.status(StatusCode::BAD_GATEWAY.as_u16())
|
||||||
.body(AxumBody::from(e.to_string()))
|
.body(AxumBody::from(e.to_string()))
|
||||||
@@ -294,6 +297,7 @@ async fn proxy_handler(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let status = upstream.status().as_u16();
|
let status = upstream.status().as_u16();
|
||||||
|
debug!(status, "upstream response");
|
||||||
let resp_headers = upstream.headers().clone();
|
let resp_headers = upstream.headers().clone();
|
||||||
|
|
||||||
let mut builder = AxumResponse::builder().status(status);
|
let mut builder = AxumResponse::builder().status(status);
|
||||||
|
|||||||
Reference in New Issue
Block a user