1. The problem I’m having:
I deployed a Next.js project, plausible, and caddy on the same server (plausible and caddy are deployed using Docker), using different subdomains for reverse proxy, and the domain is hosted on Cloudflare.
But accessing the blog project, no requests were seen in the browser’s network options, and no loaded js was seen in element. However, the same project deployed on Vercel works normally, with xhr requests and js files able to load.
2. Error messages and/or full log output:
{"level":"debug","ts":1739872454.313087,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.3616414,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.048468798,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/","headers":{"Upgrade-Insecure-Requests":["1"],"Sec-Fetch-Dest":["document"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Cache-Control":["max-age=0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Sec-Ch-Ua-Platform":["\"macOS\""],"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Priority":["u=0, i"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-User":["?1"],"Sec-Ch-Ua-Mobile":["?0"],"Sec-Fetch-Mode":["navigate"],"Sec-Fetch-Site":["same-origin"],"Accept-Encoding":["gzip, deflate, br, zstd"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Content-Type":["text/html; charset=utf-8"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Dns-Prefetch-Control":["on"],"Cache-Control":["no-store, must-revalidate"],"X-Powered-By":["Next.js"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Content-Encoding":["gzip"],"Keep-Alive":["timeout=5"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"X-Content-Type-Options":["nosniff"],"Link":["</_next/static/media/2d141e1a38819612-s.p.woff2>; rel=preload; as=\"font\"; crossorigin=\"\"; type=\"font/woff2\""],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Connection":["keep-alive"],"X-Frame-Options":["DENY"],"Vary":["RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch, Accept-Encoding"]},"status":200}
{"level":"debug","ts":1739872454.5338004,"logger":"http.handlers.reverse_proxy","msg":"streaming error","upstream":"serverip:3000","duration":0.000889381,"request":{"remote_ip":"remote_ip","remote_port":"32824","client_ip":"remote_ip","proto":"HTTP/1.1","method":"GET","host":"blog.jxzsite.com","uri":"/_next/webpack-hmr","headers":{"Cache-Control":["no-cache"],"Upgrade":["websocket"],"Sec-WebSocket-Version":["13"],"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Connection":["Upgrade"],"Sec-WebSocket-Extensions":["permessage-deflate; client_max_window_bits"],"Sec-WebSocket-Key":["YOVzdEQF5cgb+oH47hsikg=="],"Pragma":["no-cache"],"X-Forwarded-Proto":["https"],"Origin":["https://blog.jxzsite.com"],"X-Forwarded-Host":["blog.jxzsite.com"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"blog.jxzsite.com"}}}
{"level":"debug","ts":1739872454.5339131,"logger":"http.handlers.reverse_proxy","msg":"connection closed","upstream":"serverip:3000","duration":0.000889381,"request":{"remote_ip":"remote_ip","remote_port":"32824","client_ip":"remote_ip","proto":"HTTP/1.1","method":"GET","host":"blog.jxzsite.com","uri":"/_next/webpack-hmr","headers":{"Cache-Control":["no-cache"],"Upgrade":["websocket"],"Sec-WebSocket-Version":["13"],"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Connection":["Upgrade"],"Sec-WebSocket-Extensions":["permessage-deflate; client_max_window_bits"],"Sec-WebSocket-Key":["YOVzdEQF5cgb+oH47hsikg=="],"Pragma":["no-cache"],"X-Forwarded-Proto":["https"],"Origin":["https://blog.jxzsite.com"],"X-Forwarded-Host":["blog.jxzsite.com"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"blog.jxzsite.com"}},"duration":26.208983821}
{"level":"debug","ts":1739872454.555216,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.558121,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002823795,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/css/app/layout.css?v=1739872454322","headers":{"Sec-Ch-Ua-Mobile":["?0"],"Priority":["u=0"],"X-Forwarded-Proto":["https"],"Sec-Ch-Ua-Platform":["\"macOS\""],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Sec-Fetch-Dest":["style"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Fetch-Mode":["no-cors"],"X-Forwarded-Host":["blog.jxzsite.com"],"Accept":["text/css,*/*;q=0.1"],"Sec-Fetch-Site":["same-origin"],"Referer":["https://blog.jxzsite.com/"],"Accept-Encoding":["gzip, deflate, br, zstd"],"X-Forwarded-For":["remote_ip"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Last-Modified":["Tue, 18 Feb 2025 06:44:20 GMT"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Cache-Control":["no-store, must-revalidate"],"Accept-Ranges":["bytes"],"Content-Type":["text/css; charset=UTF-8"],"Keep-Alive":["timeout=5"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"X-Dns-Prefetch-Control":["on"],"Etag":["W/\"17378-19517ccec66\""],"Vary":["Accept-Encoding"],"Content-Encoding":["gzip"],"Connection":["keep-alive"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"Referrer-Policy":["strict-origin-when-cross-origin"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"]},"status":200}
{"level":"debug","ts":1739872454.574938,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.5777876,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002790632,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/chunks/webpack.js?v=1739872454322","headers":{"Accept-Encoding":["gzip, deflate, br, zstd"],"X-Forwarded-For":["remote_ip"],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-Mode":["no-cors"],"Referer":["https://blog.jxzsite.com/"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Sec-Ch-Ua-Mobile":["?0"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Fetch-Site":["same-origin"],"Sec-Fetch-Dest":["script"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Accept":["*/*"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Connection":["keep-alive"],"Keep-Alive":["timeout=5"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Content-Type":["application/javascript; charset=UTF-8"],"Content-Encoding":["gzip"],"X-Dns-Prefetch-Control":["on"],"Last-Modified":["Tue, 18 Feb 2025 09:50:21 GMT"],"Etag":["W/\"dbb7-1951877377e\""],"Vary":["Accept-Encoding"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Cache-Control":["no-store, must-revalidate"],"Accept-Ranges":["bytes"]},"status":200}
{"level":"debug","ts":1739872454.6030893,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.605757,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002616625,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/chunks/main-app.js?v=1739872454322","headers":{"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Referer":["https://blog.jxzsite.com/"],"Sec-Ch-Ua-Mobile":["?0"],"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Site":["same-origin"],"Sec-Fetch-Dest":["script"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Accept":["*/*"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Cache-Control":["no-store, must-revalidate"],"Content-Encoding":["gzip"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Vary":["Accept-Encoding"],"Connection":["keep-alive"],"Keep-Alive":["timeout=5"],"X-Content-Type-Options":["nosniff"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"X-Frame-Options":["DENY"],"X-Dns-Prefetch-Control":["on"],"Accept-Ranges":["bytes"],"Last-Modified":["Tue, 18 Feb 2025 06:44:20 GMT"],"Etag":["W/\"5cf1a1-19517ccec66\""],"Content-Type":["application/javascript; charset=UTF-8"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Referrer-Policy":["strict-origin-when-cross-origin"]},"status":200}
{"level":"debug","ts":1739872454.6126375,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.6156135,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002946428,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/chunks/app-pages-internals.js","headers":{"Accept":["*/*"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Sec-Ch-Ua-Mobile":["?0"],"Sec-Fetch-Site":["same-origin"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-Dest":["script"],"Accept-Encoding":["gzip, deflate, br, zstd"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"X-Forwarded-For":["remote_ip"],"Referer":["https://blog.jxzsite.com/"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Sec-Fetch-Mode":["no-cors"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Connection":["keep-alive"],"X-Frame-Options":["DENY"],"X-Dns-Prefetch-Control":["on"],"Vary":["Accept-Encoding"],"Content-Encoding":["gzip"],"Referrer-Policy":["strict-origin-when-cross-origin"],"Last-Modified":["Tue, 18 Feb 2025 06:44:20 GMT"],"Etag":["W/\"4bb42-19517ccec66\""],"Cache-Control":["no-store, must-revalidate"],"Accept-Ranges":["bytes"],"Content-Type":["application/javascript; charset=UTF-8"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Keep-Alive":["timeout=5"]},"status":200}
{"level":"debug","ts":1739872454.617854,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.6202428,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002349089,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/chunks/app/layout.js","headers":{"Accept-Encoding":["gzip, deflate, br, zstd"],"Accept":["*/*"],"Sec-Fetch-Mode":["no-cors"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-Site":["same-origin"],"Sec-Fetch-Dest":["script"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Sec-Ch-Ua-Mobile":["?0"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Referer":["https://blog.jxzsite.com/"],"X-Forwarded-For":["remote_ip"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Content-Type":["application/javascript; charset=UTF-8"],"Connection":["keep-alive"],"Etag":["W/\"2f55d9-19517ccef92\""],"X-Dns-Prefetch-Control":["on"],"Cache-Control":["no-store, must-revalidate"],"Accept-Ranges":["bytes"],"Last-Modified":["Tue, 18 Feb 2025 06:44:21 GMT"],"Vary":["Accept-Encoding"],"Content-Encoding":["gzip"],"Keep-Alive":["timeout=5"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"]},"status":200}
{"level":"debug","ts":1739872454.6285596,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872454.6321206,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.003532365,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/_next/static/chunks/app/page.js","headers":{"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Site":["same-origin"],"X-Forwarded-Proto":["https"],"Accept":["*/*"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Referer":["https://blog.jxzsite.com/"],"Sec-Ch-Ua-Mobile":["?0"],"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-Dest":["script"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Accept-Ranges":["bytes"],"Vary":["Accept-Encoding"],"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"Connection":["keep-alive"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Date":["Tue, 18 Feb 2025 09:54:14 GMT"],"Keep-Alive":["timeout=5"],"Content-Type":["application/javascript; charset=UTF-8"],"Content-Encoding":["gzip"],"X-Dns-Prefetch-Control":["on"],"Cache-Control":["no-store, must-revalidate"],"Last-Modified":["Tue, 18 Feb 2025 06:44:20 GMT"],"Etag":["W/\"bd92b-19517ccec66\""]},"status":200}
{"level":"debug","ts":1739872457.2099364,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872457.2120354,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002026119,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/static/favicons/favicon-32x32.png","headers":{"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Ch-Ua-Mobile":["?0"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"X-Forwarded-For":["remote_ip"],"X-Forwarded-Proto":["https"],"If-None-Match":["W/\"781-1948dcabc60\""],"Sec-Fetch-Site":["same-origin"],"Accept":["image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8"],"If-Modified-Since":["Wed, 22 Jan 2025 11:34:21 GMT"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Fetch-Mode":["no-cors"],"Referer":["https://blog.jxzsite.com/"],"Priority":["u=1, i"],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Ch-Ua-Platform":["\"macOS\""],"Sec-Fetch-Dest":["image"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"X-Frame-Options":["DENY"],"X-Dns-Prefetch-Control":["on"],"Cache-Control":["public, max-age=0"],"Etag":["W/\"781-1948dcabc60\""],"Date":["Tue, 18 Feb 2025 09:54:17 GMT"],"Connection":["keep-alive"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Content-Type-Options":["nosniff"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Accept-Ranges":["bytes"],"Last-Modified":["Wed, 22 Jan 2025 11:34:21 GMT"],"Keep-Alive":["timeout=5"]},"status":304}
{"level":"debug","ts":1739872457.218474,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872457.2198787,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.001336126,"request":{"remote_ip":"remote_ip","remote_port":"56660","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/static/favicons/site.webmanifest","headers":{"Referer":["https://blog.jxzsite.com/"],"X-Forwarded-Proto":["https"],"Sec-Fetch-Mode":["cors"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Ch-Ua-Platform":["\"macOS\""],"X-Forwarded-For":["remote_ip"],"If-None-Match":["W/\"f7-1948dcabc64\""],"X-Forwarded-Host":["blog.jxzsite.com"],"Accept":["*/*"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Priority":["u=2"],"Sec-Ch-Ua-Mobile":["?0"],"Sec-Fetch-Dest":["manifest"],"If-Modified-Since":["Wed, 22 Jan 2025 11:34:21 GMT"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Sec-Fetch-Site":["same-origin"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Dns-Prefetch-Control":["on"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Cache-Control":["public, max-age=0"],"Last-Modified":["Wed, 22 Jan 2025 11:34:21 GMT"],"Etag":["W/\"f7-1948dcabc64\""],"Date":["Tue, 18 Feb 2025 09:54:17 GMT"],"Connection":["keep-alive"],"Keep-Alive":["timeout=5"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Accept-Ranges":["bytes"]},"status":304}
{"level":"debug","ts":1739872457.2361836,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872457.2455797,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872457.2482595,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.002628827,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/search.json","headers":{"Sec-Ch-Ua-Platform":["\"macOS\""],"X-Forwarded-For":["remote_ip"],"X-Forwarded-Proto":["https"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Sec-Fetch-Mode":["cors"],"Sec-Fetch-Dest":["empty"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Sec-Fetch-Site":["same-origin"],"If-Modified-Since":["Tue, 18 Feb 2025 06:43:42 GMT"],"Priority":["u=1, i"],"Sec-Ch-Ua-Mobile":["?0"],"Accept":["*/*"],"Referer":["https://blog.jxzsite.com/"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"If-None-Match":["W/\"2d77-19517cc58e2\""],"X-Forwarded-Host":["blog.jxzsite.com"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Keep-Alive":["timeout=5"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Content-Type-Options":["nosniff"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"],"Cache-Control":["public, max-age=0"],"Last-Modified":["Tue, 18 Feb 2025 06:43:42 GMT"],"Connection":["keep-alive"],"X-Frame-Options":["DENY"],"X-Dns-Prefetch-Control":["on"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Accept-Ranges":["bytes"],"Etag":["W/\"2d77-19517cc58e2\""],"Date":["Tue, 18 Feb 2025 09:54:17 GMT"]},"status":304}
{"level":"debug","ts":1739872457.5789633,"logger":"events","msg":"event","name":"tls_get_certificate","id":"e68a802a-d81f-40fb-bfc9-aca2e09b926f","origin":"tls","data":{"client_hello":{"CipherSuites":[4866,4867,4865,49196,49200,159,52393,52392,52394,49195,49199,158,49188,49192,107,49187,49191,103,49162,49172,57,49161,49171,51,157,156,61,60,53,47,255],"ServerName":"blog.jxzsite.com","SupportedCurves":[29,23,30,25,24],"SupportedPoints":"AAEC","SignatureSchemes":[1027,1283,1539,2055,2056,2057,2058,2059,2052,2053,2054,1025,1281,1537,771,515,769,513,770,514,1026,1282,1538],"SupportedProtos":["http/1.1"],"SupportedVersions":[772,771,770,769],"RemoteAddr":{"IP":"remote_ip","Port":37302,"Zone":""},"LocalAddr":{"IP":"172.20.0.2","Port":443,"Zone":""}}}}
{"level":"debug","ts":1739872457.579084,"logger":"tls.handshake","msg":"choosing certificate","identifier":"blog.jxzsite.com","num_choices":1}
{"level":"debug","ts":1739872457.5790951,"logger":"tls.handshake","msg":"default certificate selection results","identifier":"blog.jxzsite.com","subjects":["blog.jxzsite.com"],"managed":true,"issuer_key":"acme-v02.api.letsencrypt.org-directory","hash":"6042265a21861640cb8037d0f98f5e8c12915f88c4088b15aa56570686952788"}
{"level":"debug","ts":1739872457.5791035,"logger":"tls.handshake","msg":"matched certificate in cache","remote_ip":"remote_ip","remote_port":"37302","subjects":["blog.jxzsite.com"],"managed":true,"expiration":1745579856,"hash":"6042265a21861640cb8037d0f98f5e8c12915f88c4088b15aa56570686952788"}
{"level":"debug","ts":1739872457.7765512,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"serverip:3000","total_upstreams":1}
{"level":"debug","ts":1739872457.7776756,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":0.001064551,"request":{"remote_ip":"remote_ip","remote_port":"37302","client_ip":"remote_ip","proto":"HTTP/1.1","method":"GET","host":"blog.jxzsite.com","uri":"/_next/webpack-hmr","headers":{"Origin":["https://blog.jxzsite.com"],"Cache-Control":["no-cache"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Connection":["Upgrade"],"Pragma":["no-cache"],"Sec-WebSocket-Key":["Iz7gsmoeJJo1riuVyemiCQ=="],"Sec-WebSocket-Version":["13"],"X-Forwarded-For":["remote_ip"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Upgrade":["websocket"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-WebSocket-Extensions":["permessage-deflate; client_max_window_bits"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"blog.jxzsite.com"}},"headers":{"Upgrade":["websocket"],"Connection":["Upgrade"],"Sec-Websocket-Accept":["AEcTeA3wDglzZzfHg0A7L0Hbcq0="]},"status":101}
{"level":"debug","ts":1739872457.777752,"logger":"http.handlers.reverse_proxy","msg":"upgrading connection","upstream":"serverip:3000","duration":0.001064551,"request":{"remote_ip":"remote_ip","remote_port":"37302","client_ip":"remote_ip","proto":"HTTP/1.1","method":"GET","host":"blog.jxzsite.com","uri":"/_next/webpack-hmr","headers":{"Origin":["https://blog.jxzsite.com"],"Cache-Control":["no-cache"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Connection":["Upgrade"],"Pragma":["no-cache"],"Sec-WebSocket-Key":["Iz7gsmoeJJo1riuVyemiCQ=="],"Sec-WebSocket-Version":["13"],"X-Forwarded-For":["remote_ip"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["blog.jxzsite.com"],"Upgrade":["websocket"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-WebSocket-Extensions":["permessage-deflate; client_max_window_bits"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"http/1.1","server_name":"blog.jxzsite.com"}},"http_version":1}
{"level":"debug","ts":1739872459.8229697,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"serverip:3000","duration":2.586659002,"request":{"remote_ip":"remote_ip","remote_port":"55838","client_ip":"remote_ip","proto":"HTTP/2.0","method":"GET","host":"blog.jxzsite.com","uri":"/api/contributions","headers":{"Sec-Ch-Ua-Platform":["\"macOS\""],"X-Forwarded-Host":["blog.jxzsite.com"],"Sec-Fetch-Dest":["empty"],"Sec-Ch-Ua-Mobile":["?0"],"X-Forwarded-For":["remote_ip"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"],"Sec-Fetch-Mode":["cors"],"Sec-Fetch-Site":["same-origin"],"X-Forwarded-Proto":["https"],"Accept-Language":["zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"],"Priority":["u=1, i"],"Referer":["https://blog.jxzsite.com/"],"Accept-Encoding":["gzip, deflate, br, zstd"],"Sec-Ch-Ua":["\"Not(A:Brand\";v=\"99\", \"Google Chrome\";v=\"133\", \"Chromium\";v=\"133\""],"Accept":["*/*"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"blog.jxzsite.com"}},"headers":{"Content-Security-Policy":["default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' giscus.app collect.jxzsite.com; style-src 'self' 'unsafe-inline'; img-src * blob: data:; media-src *.s3.amazonaws.com; connect-src *; font-src 'self'; frame-src giscus.app"],"Vary":["RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch"],"Date":["Tue, 18 Feb 2025 09:54:19 GMT"],"Keep-Alive":["timeout=5"],"Content-Type":["image/svg+xml"],"Connection":["keep-alive"],"Referrer-Policy":["strict-origin-when-cross-origin"],"X-Frame-Options":["DENY"],"X-Content-Type-Options":["nosniff"],"X-Dns-Prefetch-Control":["on"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"Permissions-Policy":["camera=(), microphone=(), geolocation=()"]},"status":200}
3. Caddy version:
v2.9.1
4. How I installed and ran Caddy:
a. System environment:
Docker
b. Command:
docker compose up -d
c. Service/unit/compose file:
services:
caddy:
image: caddy:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy_data:/data
- ./caddy_config:/config
volumes:
caddy_data:
caddy_config:
d. My complete Caddy config:
{
debug
}
(blog_sites) {
reverse_proxy serverip:3000
@plausible path /js/script.js /api/event
handle @plausible {
rewrite /js/script.js /js/script.js
reverse_proxy https://collect.jxzsite.com {
header_up Host {http.reverse_porxy.upstream_hostport}
}
}
}
jxzsite.com, blog.jxzsite.com {
import blog_sites
}
collect.jxzsite.com {
reverse_proxy serverip:8000
}