1. Output of caddy version
:
v2.6.1 h1:EDqo59TyYWhXQnfde93Mmv4FJfYe00dO60zMiEt+pzo=
2. How I run Caddy:
a. System environment:
running caddy in docker, managed by nomad
b. Command:
caddy run --config /local/Caddyfile
c. Service/unit/compose file:
job "web-services" {
name = "web-services"
datacenters = ["dc1"]
vault {
policies = ["read-kv"]
}
group "api" {
network {
port "port" {
to = 8080
}
port "inner" {
to = 5000
}
}
constraint {
attribute = "${attr.unique.hostname}"
operator = "!="
value = "ubuntu-4gb-fsn1-1"
}
task "proxy" {
driver = "docker"
config {
image = "ghcr.io/pluralkit/api-proxy"
ports = ["port"]
}
template {
data = <<EOH
REDIS_ADDR=10.0.1.3:6379
{{ with secret "kv/pluralkit" }}
TOKEN2={{ .Data.api_token2 }}
{{ end }}
{{ range nomadService "api-inner" }}
REMOTE_ADDR=http://{{ .Address }}:{{ .Port }}
{{ end }}
EOH
destination = "local/env"
env = true
}
service {
name = "api"
port = "port"
provider = "nomad"
}
}
task "api" {
driver = "docker"
config {
image = "ghcr.io/pluralkit/pluralkit:62c5c3865a77cc3becd3c1e8e36e91637741e15d"
entrypoint = ["dotnet", "bin/PluralKit.API.dll"]
ports = ["inner"]
}
template {
data = <<EOH
{{ with secret "kv/pluralkit" }}
PluralKit__Api__ClientSecret = "{{ .Data.discordClientSecret }}"
PluralKit__DatabasePassword = "{{ .Data.databasePassword }}"
PluralKit__SentryUrl = "{{ .Data.sentryUrl }}"
{{ end }}
EOH
destination = "local/env"
env = true
}
env {
PluralKit__Api__ClientId = 466378653216014359
PluralKit__Database = "Host=10.0.1.3;Port=5432;Username=pluralkit;Database=pluralkit;Maximum Pool Size=300;Minimum Pool Size = 100;Max Auto Prepare=100"
PluralKit__RedisAddr = "10.0.1.3:6379"
PluralKit__ElasticUrl = "http://10.0.1.3:9200"
PluralKit__ConsoleLogLevel = 2
PluralKit__ElasticLogLevel = 2
PluralKit__FileLogLevel = 5
}
service {
name = "api-inner"
port = "inner"
provider = "nomad"
}
}
}
group "dashboard" {
network {
port "port" {
to = 8080
}
}
task "dashboard" {
driver = "docker"
config {
image = "ghcr.io/pluralkit/dashboard:371d677af1fe7377e70f1a22066c9ccd174f318e"
ports = ["port"]
}
service {
name = "dashboard"
port = "port"
provider = "nomad"
}
}
}
group "caddy" {
volume "data" {
type = "host"
read_only = false
source = "caddy_data"
}
network {
port "http" {
static = 80
to = 80
}
port "https" {
static = 443
to = 443
}
}
task "caddy" {
driver = "docker"
config {
image = "caddy"
ports = ["http", "https"]
entrypoint = ["/bin/sh", "-c", "caddy run --config /local/Caddyfile"]
}
template {
data = <<EOH
"dash.pluralkit.me" {
reverse_proxy {{ range nomadService "dashboard" }} http://{{ .Address }}:{{ .Port }} {{ end }}
}
"api.pluralkit.me" {
reverse_proxy {{ range nomadService "api" }} http://{{ .Address }}:{{ .Port }} {{ end }} {
header_up X-Real-IP {remote_host}
}
}
"stats.pluralkit.me" {
reverse_proxy http://10.0.1.2:3000
}
"sentry.pluralkit.me" {
reverse_proxy http://10.0.1.2:9000 {
header_up -Connection
}
}
"plausible.pluralkit.me" {
reverse_proxy http://10.0.1.2:8000
}
"pk-webs.spectralitree.com" {
redir https://dash.pluralkit.me{uri} permanent
}
"pk-webs-beta.spectralitree.com" {
redir https://dash.pluralkit.me{uri} permanent
}
EOH
destination = "local/Caddyfile"
}
volume_mount {
volume = "data"
destination = "/data/caddy"
}
}
}
}
d. My complete Caddy config:
This is shown as a template in the above point (service file) but here’s a generated file
{
debug
}
"dash.pluralkit.me" {
reverse_proxy http://10.0.1.2:29031
}
"api.pluralkit.me" {
reverse_proxy http://10.0.1.2:20222 {
header_up X-Real-IP {remote_host}
}
}
"stats.pluralkit.me" {
reverse_proxy http://10.0.1.2:3000
}
"sentry.pluralkit.me" {
reverse_proxy http://10.0.1.2:9000 {
header_up -Connection
}
}
"plausible.pluralkit.me" {
reverse_proxy http://10.0.1.2:8000
}
"pk-webs.spectralitree.com" {
redir https://dash.pluralkit.me{uri} permanent
}
"pk-webs-beta.spectralitree.com" {
redir https://dash.pluralkit.me{uri} permanent
}
3. The problem I’m having:
I am hosting a webapp with caddy as a reverse proxy, and a couple times a day caddy will hang when trying to proxy requests for javascript files - HTML files do load correctly. (Querying the backend directly returns the file.) When that happens, requests are not logged, which is why my attempts to make the request using curl
are not shown in logs. Caddy is still able to serve requests for other domains while requests for this domain are hanging.
4. Error messages and/or full log output:
This is a sample of production logs so I have redacted any public IP addresses.
{"level":"debug","ts":1664362388.2791417,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.000769309,"request":{"remote_ip":"x.x.x.x","remote_port":"49355","proto":"HTTP/3.0","method":"GET","host":"dash.pluralkit.me","uri":"/myriad.png","headers":{"X-Forwarded-Proto":["https"],"Sec-Fetch-Mode":["no-cors"],"Sec-Fetch-Dest":["image"],"Accept-Encoding":["gzip, deflate, br"],"Sec-Ch-Ua":["\"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\""],"X-Forwarded-For":["x.x.x.x"],"Accept-Language":["fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7"],"User-Agent":["Mozilla/5.0 (Linux; Android 9; CPH1907) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36"],"Sec-Ch-Ua-Mobile":["?1"],"Sec-Ch-Ua-Platform":["\"Android\""],"Accept":["image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8"],"Sec-Fetch-Site":["same-origin"],"Referer":["https://dash.pluralkit.me/dash?tab=members"],"X-Forwarded-Host":["dash.pluralkit.me"]},"tls":{"resumed":false,"version":0,"cipher_suite":0,"proto":"","server_name":""}},"headers":{"Date":["Wed, 28 Sep 2022 10:53:08 GMT"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Content-Length":["881"],"Content-Type":["text/html"]},"status":200}c
{"level":"debug","ts":1664362388.432295,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362389.2288084,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362390.400206,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362390.8909774,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362390.8959568,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362391.9108324,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362425.2603226,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362425.2612011,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.000792064,"request":{"remote_ip":"x.x.x.x","remote_port":"42940","proto":"HTTP/3.0","method":"GET","host":"dash.pluralkit.me","uri":"/myriad.png","headers":{"Sec-Fetch-Site":["same-origin"],"Sec-Fetch-Dest":["image"],"Referer":["https://dash.pluralkit.me/dash?tab=members"],"Sec-Fetch-Mode":["no-cors"],"Sec-Ch-Ua-Mobile":["?1"],"Accept-Encoding":["gzip, deflate, br"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept":["image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8"],"User-Agent":["Mozilla/5.0 (Linux; Android 9; CPH1907) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36"],"X-Forwarded-For":["x.x.x.x"],"Sec-Ch-Ua-Platform":["\"Android\""],"Sec-Ch-Ua":["\"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\""],"Accept-Language":["fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":false,"version":0,"cipher_suite":0,"proto":"","server_name":""}},"headers":{"Content-Length":["881"],"Content-Type":["text/html"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:53:45 GMT"]},"status":200}
{"level":"debug","ts":1664362425.2833362,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362425.2837489,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362426.2671075,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362461.6895444,"logger":"events","msg":"event","name":"tls_get_certificate","id":"25ec04e6-b402-45d9-8de3-6b38fae5186a","origin":"tls","data":{"client_hello":{"CipherSuites":[47802,4865,4866,4867,49196,49195,52393,49200,49199,52392,49162,49161,49172,49171,157,156,53,47,49160,49170,10],"ServerName":"dash.pluralkit.me","SupportedCurves":[27242,29,23,24,25],"SupportedPoints":"AA==","SignatureSchemes":[1027,2052,1025,1283,515,2053,2053,1281,2054,1537,513],"SupportedProtos":["h2","http/1.1"],"SupportedVersions":[35466,772,771,770,769],"Conn":{}}}}
{"level":"debug","ts":1664362461.6896212,"logger":"tls.handshake","msg":"choosing certificate","identifier":"dash.pluralkit.me","num_choices":1}
{"level":"debug","ts":1664362461.6896403,"logger":"tls.handshake","msg":"default certificate selection results","identifier":"dash.pluralkit.me","subjects":["dash.pluralkit.me"],"managed":true,"issuer_key":"acme-v02.api.letsencrypt.org-directory","hash":"82a9906d9d9da8f72924d5e10900cb5a994c063e877a9c4b573d3fee4acdfd60"}
{"level":"debug","ts":1664362461.6896505,"logger":"tls.handshake","msg":"matched certificate in cache","remote_ip":"x.x.x.x","remote_port":"39003","subjects":["dash.pluralkit.me"],"managed":true,"expiration":1670891278,"hash":"82a9906d9d9da8f72924d5e10900cb5a994c063e877a9c4b573d3fee4acdfd60"}
{"level":"debug","ts":1664362461.7750154,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362461.7758636,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.000793587,"request":{"remote_ip":"x.x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/","headers":{"X-Forwarded-Host":["dash.pluralkit.me"],"Accept-Language":["nl-NL,nl;q=0.9"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Proto":["https"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Content-Type":["text/html"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:21 GMT"],"Content-Length":["881"]},"status":200}
{"level":"debug","ts":1664362461.9868724,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362461.9868724,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362461.98833,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.00136425,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/vendor.17033500.css","headers":{"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"],"Accept":["text/css,*/*;q=0.1"],"Accept-Encoding":["gzip, deflate, br"],"X-Forwarded-For":["x.x.x.x"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Content-Type":["text/css"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:21 GMT"]},"status":200}
{"level":"debug","ts":1664362461.989565,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.002450773,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/index.b08b4cb5.js","headers":{"X-Forwarded-Proto":["https"],"Accept-Encoding":["gzip, deflate, br"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"],"Accept":["*/*"],"Origin":["https://dash.pluralkit.me"],"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Host":["dash.pluralkit.me"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Content-Type":["application/javascript"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:21 GMT"]},"status":200}
{"level":"debug","ts":1664362462.0269926,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362462.0282197,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.001163759,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/index.b9d54d0a.css","headers":{"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"],"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept":["text/css,*/*;q=0.1"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Content-Type":["text/css"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:22 GMT"]},"status":200}
{"level":"debug","ts":1664362462.2048528,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:8000","total_upstreams":1}
{"level":"debug","ts":1664362462.2178133,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362462.221045,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.003155531,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/highlight.js/styles/github-dark.css","headers":{"Accept":["text/css,*/*;q=0.1"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"error":"EOF"}
{"level":"error","ts":1664362462.2211006,"logger":"http.log.error","msg":"EOF","request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/highlight.js/styles/github-dark.css","headers":{"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"],"Accept":["text/css,*/*;q=0.1"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"duration":0.003339429,"status":502,"err_id":"gg20skgem","err_trace":"reverseproxy.statusError (reverseproxy.go:1271)"}
{"level":"debug","ts":1664362462.2529533,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362462.254958,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.001926137,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/vendor.9bde4a0a.js","headers":{"Origin":["https://dash.pluralkit.me"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept":["*/*"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"X-Forwarded-For":["x.x.x.x"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:22 GMT"],"Content-Type":["application/javascript"]},"status":200}
{"level":"debug","ts":1664362462.49283,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362462.493922,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.001006531,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/assets/vendor.9bde4a0a.js","headers":{"Accept":["*/*"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Date":["Wed, 28 Sep 2022 10:54:22 GMT"],"Content-Type":["application/javascript"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"]},"status":200}
{"level":"debug","ts":1664362462.5272846,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362462.5283976,"logger":"http.handlers.reverse_proxy","msg":"upstream roundtrip","upstream":"10.0.1.2:29031","duration":0.001036428,"request":{"remote_ip":"x.x.x.x","remote_port":"39003","proto":"HTTP/2.0","method":"GET","host":"dash.pluralkit.me","uri":"/myriad.png","headers":{"X-Forwarded-For":["x.x.x.x"],"X-Forwarded-Proto":["https"],"X-Forwarded-Host":["dash.pluralkit.me"],"Accept":["*/*"],"Accept-Encoding":["gzip, deflate, br"],"User-Agent":["Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1"],"Accept-Language":["nl-NL,nl;q=0.9"],"Referer":["https://dash.pluralkit.me/"]},"tls":{"resumed":false,"version":772,"cipher_suite":4865,"proto":"h2","server_name":"dash.pluralkit.me"}},"headers":{"Content-Type":["text/html"],"X-Pluralkit-Version":["3bae5344b651fd66ed38524f07eac471b07fea73"],"Date":["Wed, 28 Sep 2022 10:54:22 GMT"],"Content-Length":["881"]},"status":200}
{"level":"debug","ts":1664362462.744733,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362463.2885842,"logger":"http.stdlib","msg":"http: TLS handshake error from 109.36.140.191:39006: EOF"}
{"level":"debug","ts":1664362463.516562,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362477.6979172,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362477.698019,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362478.329839,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362478.3329945,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362478.3332086,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362479.3548496,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362527.210284,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:9000","total_upstreams":1}
{"level":"debug","ts":1664362546.082937,"logger":"events","msg":"event","name":"tls_get_certificate","id":"b88addc1-9620-49e8-b309-096efb0f8232","origin":"tls","data":{"client_hello":{"CipherSuites":[56026,4865,4866,4867,49196,49195,52393,49200,49199,52392,49162,49161,49172,49171,157,156,53,47,49160,49170,10],"ServerName":"dash.pluralkit.me","SupportedCurves":[64250,29,23,24,25],"SupportedPoints":"AA==","SignatureSchemes":[1027,2052,1025,1283,515,2053,2053,1281,2054,1537,513],"SupportedProtos":["h2","http/1.1"],"SupportedVersions":[6682,772,771,770,769],"Conn":{}}}}
{"level":"debug","ts":1664362546.0829973,"logger":"tls.handshake","msg":"choosing certificate","identifier":"dash.pluralkit.me","num_choices":1}
{"level":"debug","ts":1664362546.0830133,"logger":"tls.handshake","msg":"default certificate selection results","identifier":"dash.pluralkit.me","subjects":["dash.pluralkit.me"],"managed":true,"issuer_key":"acme-v02.api.letsencrypt.org-directory","hash":"82a9906d9d9da8f72924d5e10900cb5a994c063e877a9c4b573d3fee4acdfd60"}
{"level":"debug","ts":1664362546.0830233,"logger":"tls.handshake","msg":"matched certificate in cache","remote_ip":"x.x.x.x","remote_port":"54810","subjects":["dash.pluralkit.me"],"managed":true,"expiration":1670891278,"hash":"82a9906d9d9da8f72924d5e10900cb5a994c063e877a9c4b573d3fee4acdfd60"}
{"level":"debug","ts":1664362546.713755,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362546.7138927,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
{"level":"debug","ts":1664362546.713954,"logger":"http.handlers.reverse_proxy","msg":"selected upstream","dial":"10.0.1.2:29031","total_upstreams":1}
5. What I already tried:
- I tried using
curl
instead of a web browser (no change in behaviour). - I tried enabling debug mode to see if there is any useful information in logs (I couldn’t find anything)