本文へ移動

リバースプロキシへの対応 ​

Hono アプリケーションをリバースプロキシの背後で実行する場合、x-forwarded-proto ヘッダーの値を反映させる必要があるかもしれません。たとえば、x-forwarded-proto で指定された URL のプロトコルを c.req.url から取得できるようにする必要があります。

推奨される方法は、Hono の app.fetch を呼び出す前に新しい Request オブジェクトを作成し、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))
  },
})

MIT ライセンスで公開されています。