Aller au contenu

Utiliser un proxy inverse ​

Supposons que vous souhaitiez exécuter l’application Hono derrière un proxy inverse. Dans ce cas, vous devrez peut-être prendre en compte la valeur de l’en-tête x-forwarded-proto. Par exemple, le protocole de l’URL disponible dans c.req.url doit pouvoir refléter celui indiqué par x-forwarded-proto.

La bonne pratique consiste à créer un nouvel objet Request avant l’appel à app.fetch de Hono, puis à le transmettre à app.fetch.

Cloudflare Workers / Deno / Bun ​

ts
import { Hono } from 'hono'

const app = new Hono()

//...

export default {
  fetch: (req: Request) => {
    const url = new URL(req.url)
    url.protocol =
      req.headers.get('x-forwarded-proto') ?? url.protocol
    return app.fetch(new Request(url, req))
  },
}

Node.js ​

ts
import { Hono } from 'hono'
import { serve } from '@hono/node-server'

const app = new Hono()

serve({
  fetch: (req) => {
    const url = new URL(req.url)
    url.protocol =
      req.headers.get('x-forwarded-proto') ?? url.protocol
    return app.fetch(new Request(url, req))
  },
})

Publié sous licence MIT.