When the handler is behind a proxy server Reference const ips = request.headers.get('x-forwarded-for'); // comma-separated list of IPs Node Reference import http from 'node:http'; http .createServer((request) => { const ip = request.socket.remoteAddress; }) Express Reference import express from 'express' express().get('*', (request) => { const ip = request.ip; }) Cloudflare Workers Reference export default { async fetch(request) { const ip = request.headers.get('cf-connecting-ip'); } } Deno With the std lib serve (deprecated) Reference import { serve } from 'https://deno.land/std@0.92.0/http/server.ts'; const server = serve({port: 8000}); for await (const request of server) { const ip = request.conn.remoteAddr.hostname; } With the new experimental http API (after v1.25) Reference Deno.serve((request, info) => { const ip = info.remoteAddr.hostname; }); Bun Reference export default { async fetch(request, server) { const ip = server.requestIP(request); } }