Forward Proxy vs Reverse Proxy: Key Differences, Diagrams and Comparison Table

Networking guide · Last reviewed 1 October 2026 · 18 min read

Forward proxy vs reverse proxy comes down to one question: whose side is the proxy on? A forward proxy works for the client. You configure your browser, script or network to send requests to it, and it fetches websites on your behalf, so the site sees the proxy’s IP address instead of yours; a rotating residential proxy is a commercial example. A reverse proxy works for the server. It sits in front of a website, receives every visitor’s request as if it were the site, and passes it to the real servers behind it. This guide compares the two side by side, shows the request flow for each, explains the Forwarded and X-Forwarded-For headers and TLS termination, covers the software and services behind both, and shows how reverse proxies help absorb DDoS traffic.

The short version

A forward proxy sits in front of clients and hides them from the websites they visit; a reverse proxy sits in front of servers and hides them from the clients that visit them. You choose and configure a forward proxy yourself, for privacy, access control, geo-testing or data collection. A website’s operator runs the reverse proxy, for load balancing, caching, TLS termination and protection against attack traffic, and visitors never configure anything. Many requests pass through both: your forward proxy on the way out, the site’s reverse proxy on the way in.

What is a forward proxy?

A proxy that works for the client

A forward proxy is a server that makes requests on behalf of its clients. When people just say “proxy”, this is usually what they mean. The HTTP specification, RFC 9110, defines a proxy as a message-forwarding agent chosen by the client, usually through local configuration. That word “chosen” is the heart of it: the client knows the proxy exists and sends its traffic there on purpose.

The Apache HTTP Server documentation puts it plainly. An ordinary forward proxy sits between the client and the origin server; to get content, the client sends the request to the proxy and names the origin server as the target, and the proxy fetches the content and returns it. The client has to be specially configured to use it, in the browser’s proxy settings, the operating system, an environment variable such as HTTPS_PROXY, or directly in code.

Because the proxy opens the connection to the website, the website sees the proxy’s IP address, not the client’s. That one property explains most forward proxy use cases:

  • Access control and filtering. Companies and schools route staff or student traffic through a forward proxy that allows, blocks and logs sites. Apache’s docs give “Internet access to internal clients that are otherwise restricted by a firewall” as the typical use.
  • Caching. A shared proxy can keep copies of popular content and serve them to many users, saving bandwidth. Squid, an open-source forward proxy, describes itself as a caching proxy that reduces bandwidth and improves response times.
  • Privacy and location. A proxy in another city or country lets you see a website the way local users see it, which is what ad verification, price monitoring and SEO rank checks depend on.
  • Data collection at scale. Scrapers and monitoring tools spread requests over many IP addresses through a rotating proxy network, so no single address sends everything.
Figure 1 — a forward proxy: the client knows about the proxy, the website doesn’t
  YOUR SIDE                     |   THE INTERNET
                                |
  browser / script  (your IP)   |
        |                       |
        |  "get example.com"    |
        v                       |
  forward proxy  (you chose it) |
        |                       |
        +-----------------------+-->  example.com
                                |     sees the proxy's IP,
                                |     not yours

On the wire, a client talking to a forward proxy sends a slightly different request from one it would send to a website directly. RFC 9112 says that for a plain HTTP request to a proxy the client sends the full URL, in what it calls absolute-form, so the proxy knows where to go. For HTTPS the client first sends a CONNECT request naming only the host and port, and the proxy opens a tunnel. You can see both forms in Figure 2.

Figure 2 — what a client sends to a forward proxy (RFC 9112 request forms)
# plain HTTP: the full URL goes to the proxy (absolute-form)
GET http://example.com/prices HTTP/1.1
Host: example.com
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

# HTTPS: ask the proxy for a tunnel first (authority-form)
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

The Proxy-Authorization header carries the client’s credentials for the proxy. RFC 9110 notes that it applies only to the next proxy that asked for authentication, and that proxy consumes it, so it is not passed on to the website.

What is a reverse proxy?

A proxy that works for the server

A reverse proxy faces the other way. It sits in front of one or more web servers, and every visitor’s request reaches it first. RFC 9110 calls it a gateway, “a.k.a. reverse proxy”: an intermediary that acts as the origin server for the client but forwards the requests inbound to other servers. The Apache documentation says a reverse proxy “appears to the client just like an ordinary web server”, with no special configuration needed on the client.

That is the practical difference you notice first. Nobody sets a reverse proxy in their browser. The website’s DNS record points at the reverse proxy, so visitors reach it simply by typing the address. The proxy then decides which backend server gets each request, passes it on and returns the answer as if it had produced it itself. The backend servers’ own addresses can stay private.

The RFC lists what gateways are typically for, and the list still holds: improving performance through “accelerator” caching, and partitioning or load balancing HTTP services across several machines. Add the jobs modern reverse proxies took on later and you get the usual set:

  • Load balancing. Spread requests over several application servers and stop sending traffic to one that fails a health check.
  • TLS termination. Hold the site’s certificate, decrypt HTTPS at the edge and pass plain or re-encrypted traffic to the backends.
  • Caching and compression. Serve repeat content without touching the application.
  • One address for many services. Route /api to one service and /shop to another, which Apache describes as bringing several servers into the same URL space.
  • Protection. Hide the origin’s IP, rate-limit abusive clients and absorb attack traffic before it reaches the application.

You have used a reverse proxy today without knowing it. The page you are reading comes through one: its response headers include Server: cloudflare and a CF-RAY request ID, which Cloudflare’s docs describe as an identifier encoding the data centre that handled the request.

Figure 3 — a reverse proxy: the client doesn’t know the backends exist
  THE INTERNET                  |   THE SITE'S NETWORK
                                |
  visitor  (203.0.113.7)        |
     |                          |
     |  GET www.example.com     |
     v                          |
  reverse proxy                 |
  (www.example.com resolves     |
   here; it terminates TLS)     |
     |                          |
     +--------------------------+-->  app server 1  10.0.0.11
     |                          |
     +--------------------------+-->  app server 2  10.0.0.12
                                |     private addresses,
                                |     never exposed

Forward proxy vs reverse proxy: comparison table

The differences side by side

Both are proxies in the literal sense: they receive a request, make a request of their own and relay the answer. What changes is who deploys them, who knows about them and what they protect. The table sums up forward proxy vs reverse proxy on the points that matter in practice.

Forward proxyReverse proxy
Works forThe client (a user, a team, a script)The server (a website, an API, an app)
Who sets it upThe user or the user’s network adminThe site operator
Does the client know?Yes, the client is configured to use itNo, it looks like the website itself
What it hidesThe client’s IP from the websiteThe backend servers’ IPs from visitors
Where it sitsNear the client, or in a provider’s networkIn front of the servers, often at a CDN edge
Request it receivesFull URL (absolute-form) or CONNECT host:443An ordinary request for its own hostname
HTTPSUsually a blind tunnel; it can’t read the trafficUsually terminates TLS with the site’s certificate
Headers it may addVia, or none if its job is to hide the clientX-Forwarded-For, X-Forwarded-Proto, Forwarded
Typical jobsFiltering, caching, privacy, geo-testing, scrapingLoad balancing, TLS, caching, WAF, DDoS absorption
Typical examplesSquid, corporate web gateways, residential and mobile proxy networksNginx, HAProxy, Caddy, Traefik, Envoy, CDNs

Key takeaways

  • A forward proxy acts for clients; a reverse proxy acts for servers.
  • Clients are configured to use a forward proxy; they reach a reverse proxy through DNS without knowing it.
  • A forward proxy hides who is asking; a reverse proxy hides who is answering.
  • With HTTPS, a forward proxy normally relays encrypted bytes, while a reverse proxy decrypts them with the site’s certificate.
  • The same software can do both jobs; the direction is a matter of deployment.

How a request flows through each

And through both at once

The clearest way to see forward proxy vs reverse proxy in action is to follow one HTTPS request through each. Start with a forward proxy. Your client connects to the proxy and sends CONNECT example.com:443 with your proxy credentials. The proxy checks them, opens a TCP connection to example.com from its own IP address and replies 200. From then on RFC 9110 says the proxy restricts itself to blind forwarding of data in both directions. Your client and the website negotiate TLS through the tunnel, and the website sees a connection from the proxy’s IP.

Now the same visitor reaching a site behind a reverse proxy. DNS for www.example.com returns the reverse proxy’s address. The browser opens a TLS connection to it, and the proxy presents the site’s certificate, decrypts the request, applies its rules (cache, rate limit, routing) and forwards the request to a backend over the private network, adding headers that record the visitor’s real IP. The backend answers the proxy, and the proxy answers the browser.

In real traffic these chains often line up. A scraper sending requests through a residential proxy, to a site served through a CDN, passes through both kinds of proxy in one trip:

Figure 4 — a forward proxy and a reverse proxy on the same request
client (your IP)
   |  CONNECT www.example.com:443
   v
FORWARD PROXY  (yours: residential IP 198.51.100.24)
   |  opens TCP to www.example.com, then relays TLS blindly
   v
REVERSE PROXY / CDN edge  (the site's: holds the certificate)
   |  decrypts, checks rules, adds X-Forwarded-For: 198.51.100.24
   v
origin app server  (private)
   -> logs the visitor as 198.51.100.24, never sees your IP

The site’s operator sees the forward proxy’s IP as the visitor, because that is who connected to their reverse proxy. You, on the other side, never see the origin server’s address, only the reverse proxy’s. Each proxy hides its own side.

Companies do the same thing on purpose inside one network. Staff browse through an outbound forward proxy that enforces the acceptable-use policy, while the company’s public apps sit behind an inbound reverse proxy. The two are managed by different teams and solve different problems, even if the same product runs both.

Forwarded and X-Forwarded-For headers

How the real client IP survives a reverse proxy

A reverse proxy creates a problem for the servers behind it: every request now arrives from the proxy’s address. HAProxy’s manual says it directly: since HAProxy works in reverse-proxy mode, the servers see its IP address as their client address. Logs, analytics, geolocation and rate limits all need the visitor’s real address, so the proxy writes it into a header.

The common header is X-Forwarded-For. MDN describes it as a de facto standard, not part of any current specification. Each proxy appends the address it received the connection from, so the list reads left to right from the original client to the most recent proxy. Companion headers record the original protocol (X-Forwarded-Proto) and hostname (X-Forwarded-Host).

RFC 7239 standardised the same information in a single Forwarded header with four parameters: for (the client or previous proxy), by (the proxy’s interface that received the request), host (the original Host header) and proto (http or https). IPv6 addresses must be quoted and bracketed. Figure 5 shows the headers a backend might receive after one reverse proxy.

Figure 5 — headers added by a reverse proxy (examples follow RFC 7239 and MDN)
# de facto headers: most software sends these
X-Forwarded-For: 203.0.113.7
X-Forwarded-Proto: https
X-Forwarded-Host: www.example.com

# the standard header (RFC 7239)
Forwarded: for=203.0.113.7;proto=https;host=www.example.com;by=203.0.113.43
Forwarded: for="[2001:db8:cafe::17]:4711"

# after two proxies, each appends the address it received
X-Forwarded-For: 203.0.113.7, 198.51.100.17
Forwarded: for=203.0.113.7, for=198.51.100.17

# plus the Via header, which RFC 9110 requires proxies to add
Via: 1.1 edge-proxy

Here is the security catch, and every source agrees on it. RFC 7239 warns that the Forwarded header cannot be relied upon to be correct, because any node on the way, including the client, can modify it. MDN goes further: if your server can be reached directly from the internet, no part of the X-Forwarded-For list is trustworthy for security decisions. A client can send a fake header, and a careless proxy will append the real address after it.

The fix is to trust only addresses added by proxies you control, reading the list from the right. Each reverse proxy has a setting for it. Nginx’s realip module takes a list of trusted proxy addresses in set_real_ip_from and, with real_ip_recursive on, replaces the client address with the last untrusted address in the header. Caddy ignores incoming X-Forwarded-* values unless the sender is listed in trusted_proxies. Traefik trusts them only from the IPs in forwardedHeaders.trustedIPs. Envoy uses xff_num_trusted_hops to decide how many addresses from the right it believes.

What about forward proxies? On an HTTPS request through a CONNECT tunnel, a forward proxy can’t add headers at all, because it only relays encrypted bytes. On plain HTTP a corporate proxy may add Via or X-Forwarded-For. A proxy whose job is to hide the client, such as an anonymous proxy, leaves the client address out.

HTTPS: tunnels vs TLS termination

Who can read the traffic

Encryption is where forward and reverse proxies differ most, and where they are most often misunderstood.

Forward proxy: a tunnel it can’t see into

For an https:// address, a client asks its forward proxy for a CONNECT tunnel. RFC 9110 describes tunnels as an end-to-end virtual connection, through one or more proxies, that can then be secured with TLS. The TLS session runs between your client and the website, so the proxy sees the destination host and port, the timing and the amount of data, but not the pages, form fields or cookies.

The exception is TLS inspection, which some corporate proxies use to scan traffic. Squid’s SslBump feature, for example, decrypts CONNECT traffic by becoming a man in the middle, which only works when client devices trust a certificate authority the proxy controls. Squid’s own documentation warns that decrypting HTTPS without users’ consent or knowledge may violate ethical norms and may be illegal in some jurisdictions. Without a certificate authority your device trusts, a proxy can’t decrypt the tunnel without browsers showing a certificate warning, so a proxy network you simply log in to with a username and password relays HTTPS as a plain tunnel.

Reverse proxy: it holds the certificate

A reverse proxy is the endpoint of the visitor’s TLS connection. It holds the site’s certificate and private key, decrypts each request, and can then route on the path, cache the response or block it. This is TLS termination. Behind it, the proxy either forwards plain HTTP over a private network or opens a new TLS connection to the backend (nginx’s proxy_ssl_verify and related directives cover that second leg). When one proxy serves many sites on one IP address, the TLS Server Name Indication extension (RFC 6066) tells it which certificate to present; nginx’s docs note that TLS 1.3 makes SNI mandatory to implement.

Figure 6 — TLS termination and forwarding headers in nginx (directives from nginx.org)
upstream app_servers {
    server 10.0.0.11:8080;
    server 10.0.0.12:8080;
}

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     /etc/nginx/certs/www.example.com.crt;
    ssl_certificate_key /etc/nginx/certs/www.example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;

    location / {
        proxy_pass        http://app_servers;
        proxy_set_header  Host              $host;
        proxy_set_header  X-Real-IP         $remote_addr;
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
    }
}

Nginx balances the two upstream servers with weighted round-robin by default. The $proxy_add_x_forwarded_for variable is the incoming X-Forwarded-For header with the client address appended, or just the client address if there was no header. Caddy gets the same result with less configuration: its automatic HTTPS obtains and renews certificates from Let’s Encrypt or ZeroSSL, and a site block containing reverse_proxy 10.0.0.11:8080 10.0.0.12:8080 is a complete TLS-terminating load balancer.

Who provides forward proxies

Run your own, or use a proxy network

There are two ways to get a forward proxy, and which one fits depends on whose IP address you need the website to see.

Run your own. Squid is the classic self-hosted forward proxy: a caching proxy for HTTP, HTTPS and FTP with extensive access controls, released under the GNU GPL. Apache httpd can act as one with mod_proxy and ProxyRequests On, and its docs stress that you must restrict who can use it before switching it on, because an open forward proxy lets anyone reach arbitrary sites while hiding their origin. A self-hosted proxy is right for filtering, caching and controlling a team’s outbound traffic. Its exit IP is your own server’s, usually a single datacenter address.

Use a proxy network. When the point is to appear from many places, or from real household and mobile connections, you use a commercial forward proxy service. ProxyEmpire’s rotating residential proxies are an example: you point your client at one gateway, authenticate with a username and password, and each request or session exits from a residential IP in the country, city or ISP you choose. Mobile proxies do the same with 4G/5G carrier IPs, and datacenter proxies trade that realism for speed and price. Our guide to residential, mobile and datacenter proxies covers the trade-offs.

Using a commercial forward proxy looks the same as any other. In curl, -x sets the proxy, credentials can sit inside the proxy URL, and curl’s manual says HTTPS_PROXY in the environment has the same effect as the option:

Figure 7 — sending a request through a forward proxy with curl
# one request through a ProxyEmpire residential gateway
curl -x http://USERNAME:PASSWORD@v2.proxyempire.io:5000 https://example.com/

# or set it once for every tool that reads the variable
export HTTPS_PROXY=http://USERNAME:PASSWORD@v2.proxyempire.io:5000
curl https://example.com/

Things worth checking in any forward proxy you pay for: the IP types and locations on offer, how targeting works, whether you can keep one IP for a session or rotate on every request (see sticky vs rotating proxies), the supported protocols (HTTP, HTTPS and SOCKS5), how you authenticate and whether a real person answers when something breaks. Avoid free open proxies for anything that matters: whoever runs one sees your destinations and any unencrypted traffic.

Reverse proxy software and CDNs

What each project’s documentation says it does

Reverse proxies are mostly open-source software you run yourself, or a CDN that runs them for you at its edge. The projects below are the ones most often deployed. They are listed in no particular order, and each is described from its own documentation, not ranked; any of them can do the basic job of terminating TLS and forwarding to backends.

SoftwareHow its docs describe itReverse proxy features its docs cover
NginxAn HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP proxy server and mail proxy serverproxy_pass, upstream groups with round-robin, least_conn, ip_hash, hash and random balancing, passive health checks, caching, request rate limiting, real-IP handling
HAProxy“The Reliable, High Performance TCP/HTTP Load Balancer”TCP and HTTP modes, TLS termination with bind ... ssl crt, option forwardfor and option forwarded (RFC 7239), stick tables for tracking request rates, health checks
CaddyA web server that serves all sites over HTTPS by defaultAutomatic certificates, reverse_proxy with load balancing policies (random by default), active and passive health checks, X-Forwarded-* headers with trusted_proxies
TraefikAn open-source application proxy that discovers its configuration by inspecting your infrastructureProviders such as Docker, Kubernetes, Consul and files update routes automatically; RateLimit middleware; trusted forwarded headers and PROXY protocol on entrypoints
EnvoyAn L7 proxy and communication bus for large service-oriented architecturesEdge and service proxy, HTTP/1.1, HTTP/2 and HTTP/3, active and passive health checks, retries, circuit breaking, local and global rate limiting, XFF handling
Apache httpdA web server that runs mod_proxy in forward or reverse (gateway) modeProxyPass for reverse proxying, load balancing across backends, caching with mod_cache

Their documentation also shows where each one starts from. Nginx, Apache and Caddy are web servers first, so they can serve files and proxy in the same process. HAProxy presents itself as a load balancer for TCP and HTTP. Traefik’s providers and Envoy’s dynamic configuration APIs are built for platforms where backends appear and disappear and the proxy has to follow, such as Docker and Kubernetes. Caddy’s automatic HTTPS removes certificate work entirely.

CDNs are reverse proxies too

A content delivery network is a reverse proxy spread over many locations. Cloudflare’s documentation defines a reverse proxy as servers that sit in front of web servers and either forward requests to them or handle requests on their behalf, and explains the mechanics: when a DNS record is set to proxied, DNS answers with a Cloudflare anycast IP instead of the origin’s IP, so HTTP and HTTPS traffic passes through Cloudflare’s network on its way to the origin. Other CDNs work on the same principle. The CDN caches static content near visitors, terminates TLS and passes the rest to the origin, adding headers such as CF-Connecting-IP and X-Forwarded-For so the origin still knows who the visitor was.

Reverse proxies and DDoS mitigation

Absorb, filter and hide the origin

CISA defines a distributed denial-of-service (DDoS) attack as one where multiple machines work together to make a service unavailable to its legitimate users. Reverse proxies are the main defensive layer against it, for four reasons.

  • They absorb volume. A CDN’s reverse proxies run on a large, distributed network. With anycast, attack traffic is spread across many locations instead of landing on one server. Cloudflare’s docs say its DDoS protection works at layers 3, 4 and 7 and automatically detects and mitigates attacks.
  • They hide the origin. If DNS only ever returns the proxy’s address, attackers have no direct target. The origin should then accept connections only from the proxy’s published IP ranges; otherwise anyone who finds the real IP can go around the proxy.
  • They filter at the edge. Because a reverse proxy terminates TLS, it can inspect requests and drop malformed ones, block known-bad patterns and challenge suspicious clients before the application does any work.
  • They serve from cache. Requests for cached pages never reach the origin, so a flood of them costs the application nothing.

Rate limiting is the tool you control directly. It caps how many requests one client can make in a period, which blunts application-layer floods and brute-force login attempts. Nginx’s limit_req module uses a leaky bucket per key, usually the client IP; HAProxy tracks request rates per source in a stick table; Traefik’s RateLimit middleware uses a token bucket with average, period and burst; Envoy’s local rate limit filter returns 429 by default. Figure 8 shows the first two.

Figure 8 — per-IP rate limiting in nginx and HAProxy
# nginx: 10 requests/second per client IP, bursts of 20, answer 429
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

server {
    location /login/ {
        limit_req        zone=perip burst=20 nodelay;
        limit_req_status 429;
        proxy_pass       http://app_servers;
    }
}

# HAProxy: deny clients above 100 requests per 10 seconds
frontend www
    mode http
    bind :443 ssl crt /etc/haproxy/certs/site.pem
    stick-table type ip size 100k expire 30s store http_req_rate(10s)
    http-request track-sc0 src
    http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }
    default_backend app_servers

Two details matter. Nginx returns 503 for rejected requests unless you set limit_req_status, and 429 Too Many Requests is the clearer answer. And if the proxy sits behind a CDN, the key has to be the real client IP recovered from trusted forwarded headers, as in the headers section above; otherwise every visitor shares the CDN’s address and one limit.

Rate limiting and a single reverse proxy won’t stop a large volumetric attack on their own; that takes the capacity of a distributed network, usually a CDN or a dedicated DDoS protection service, working with your hosting provider. CISA’s guidance lists enrolling in a protection service that detects abnormal traffic and redirects it away from your network, having a response plan, and contacting your ISP when an attack starts. A forward proxy plays no part in defending a site: it protects clients, not servers.

When you need which

Match the proxy to the job

Deciding between a forward proxy vs reverse proxy is rarely hard once you ask the direction question. The quickest test: if you want to change how you reach other people’s websites, you need a forward proxy. If you want to change how people reach your website, you need a reverse proxy. The enterprise use cases break down like this.

You want to…Use
Control, filter and log what staff or students can browseForward proxy (self-hosted or a web gateway)
Check prices, ads or search results as users in other countries see themForward proxy (residential or mobile network)
Collect public web data without sending everything from one IPForward proxy (rotating network)
Test your own site or app from different locations and networksForward proxy
Spread traffic over several app servers and survive one failingReverse proxy (load balancer)
Manage HTTPS certificates in one placeReverse proxy (TLS termination)
Serve many services under one domainReverse proxy (path or host routing)
Speed up a site for visitors worldwide and absorb attack trafficReverse proxy at a CDN

Most organisations end up with both, run by different people. The network team owns the outbound proxy, the platform team owns the load balancer, and the marketing or data team rents a proxy network for research. None of them replaces the others.

Where ProxyEmpire fits

A forward proxy network

To be clear about categories: ProxyEmpire is a forward proxy provider. It doesn’t host websites, terminate your TLS or protect your servers from attack traffic; for that you want a reverse proxy or a CDN from the section above. What it gives you is the outbound side: 30M+ residential IPs and 4M+ mobile IPs, reached through the gateway v2.proxyempire.io on port 5000 with username and password authentication, over HTTP, HTTPS or SOCKS5. Rotating residential and mobile proxies can be targeted by country, region, city, ZIP, ISP (carrier for mobile), ASN and OS fingerprint at no extra charge, with rotating or sticky sessions. There are also rotating mobile proxies, static residential and datacenter options, 99.9% uptime shown on the public status page and 24/7 support from real people. Residential starts at $3.50/GB and falls to $1.50/GB, unused bandwidth rolls over, and you can test it with a $1.97 trial.

Forward proxy vs reverse proxy FAQ

Short answers
What is the main difference between a forward proxy and a reverse proxy?

The short answer to forward proxy vs reverse proxy is direction. A forward proxy acts for clients and hides them from the websites they visit. A reverse proxy acts for servers and hides them from the visitors who reach them. Clients configure a forward proxy; they reach a reverse proxy through DNS without knowing it.

Is a VPN a forward proxy?

They do a similar job, since both make your traffic leave from another IP, but they work differently. A VPN usually tunnels all of a device’s traffic at the network layer and encrypts it to the VPN server. A forward proxy handles traffic from the apps that are set to use it, at the HTTP or SOCKS level.

Is a load balancer a reverse proxy?

An HTTP load balancer is a reverse proxy whose main job is to spread requests across several backends. Nginx, HAProxy, Caddy, Traefik and Envoy all do both.

Is Cloudflare a forward proxy or a reverse proxy?

For websites, Cloudflare is a reverse proxy: proxied DNS records point visitors at Cloudflare’s network, which forwards requests to the origin. The same goes for other CDNs.

What is an example of a forward proxy vs a reverse proxy?

A company web filter that staff browse through, or a residential proxy network a price-monitoring tool connects to, is a forward proxy. Nginx or HAProxy balancing traffic across a shop’s app servers, or a CDN in front of a news site, is a reverse proxy.

Can a reverse proxy see my HTTPS traffic?

The website’s reverse proxy can, because it holds the site’s certificate and decrypts requests on the site’s behalf. It is part of the website, not a third party, in the same way the web server is.

Can a forward proxy see my HTTPS traffic?

Normally not. It relays an encrypted tunnel and sees only the host, port and data volume. The exception is TLS inspection, where your device has been made to trust the proxy’s own certificate authority, as in some corporate networks.

Do reverse proxies stop DDoS attacks?

They are the main defence: a CDN’s distributed reverse proxies absorb and filter attack traffic, hide the origin and rate-limit abusive clients. Very large attacks still need the capacity of a CDN or a dedicated protection service.

Is a residential proxy a forward proxy?

Yes. A residential proxy network is a forward proxy service whose exit IPs belong to home internet connections, so websites see a household IP instead of yours or a datacenter’s.

References

Primary documentation
  1. IETF — RFC 9110, “HTTP Semantics”: intermediaries, Via, CONNECT, Proxy-Authorization. rfc-editor.org/rfc/rfc9110
  2. IETF — RFC 9112, “HTTP/1.1”: absolute-form and authority-form request targets. rfc-editor.org/rfc/rfc9112
  3. IETF — RFC 7239, “Forwarded HTTP Extension”. rfc-editor.org/rfc/rfc7239
  4. MDN Web Docs — X-Forwarded-For. developer.mozilla.org/…/X-Forwarded-For
  5. Apache HTTP Server — mod_proxy, forward proxies and reverse proxies. httpd.apache.org/docs/2.4/mod/mod_proxy
  6. nginx — ngx_http_proxy_module. nginx.org/en/docs/http/ngx_http_proxy_module
  7. nginx — ngx_http_upstream_module. nginx.org/en/docs/http/ngx_http_upstream_module
  8. nginx — Configuring HTTPS servers. nginx.org/en/docs/http/configuring_https_servers
  9. nginx — ngx_http_realip_module. nginx.org/en/docs/http/ngx_http_realip_module
  10. nginx — ngx_http_limit_req_module. nginx.org/en/docs/http/ngx_http_limit_req_module
  11. HAProxy — Configuration Manual (option forwardfor, option forwarded, stick tables, bind ssl). docs.haproxy.org/2.8/configuration
  12. Caddy — reverse_proxy directive. caddyserver.com/docs/caddyfile/directives/reverse_proxy
  13. Caddy — Automatic HTTPS. caddyserver.com/docs/automatic-https
  14. Traefik — Providers overview. doc.traefik.io/…/providers/overview
  15. Traefik — EntryPoints (forwarded headers, PROXY protocol). doc.traefik.io/…/entrypoints
  16. Traefik — RateLimit middleware. doc.traefik.io/…/middlewares/ratelimit
  17. Envoy — What is Envoy. envoyproxy.io/docs/envoy/latest/intro/what_is_envoy
  18. Envoy — HTTP header manipulation (x-forwarded-for, xff_num_trusted_hops). envoyproxy.io/…/http_conn_man/headers
  19. Envoy — Local rate limit filter. envoyproxy.io/…/local_rate_limit_filter
  20. Squid — project home and SslBump. squid-cache.org · wiki.squid-cache.org/Features/SslBump
  21. curl — manual page, –proxy and proxy environment variables. curl.se/docs/manpage
  22. Cloudflare — How Cloudflare works. developers.cloudflare.com/…/how-cloudflare-works
  23. Cloudflare — About DDoS protection. developers.cloudflare.com/ddos-protection/about
  24. Cloudflare — HTTP headers (CF-Connecting-IP, X-Forwarded-For, CF-Ray). developers.cloudflare.com/…/http-headers
  25. CISA — Understanding Denial-of-Service Attacks. cisa.gov/…/understanding-denial-service-attacks

Need the forward side? Start with one gateway

Residential and mobile proxies over HTTP, HTTPS and SOCKS5, with country, city, ISP and ASN targeting at no extra charge, rotating or sticky sessions and 24/7 support from real people. Try ProxyEmpire for $1.97.

ProxyEmpire proxy types and prices

ProxyEmpire

Proxies for data collection at scale.

Residential, mobile, ISP and datacenter proxies for scraping, ad verification, SEO monitoring and multi-account work. Choose from 30M+ ethically sourced residential IPs and 4M+ 4G/5G mobile IPs in 170+ countries, target by country, city, ZIP, ISP or carrier, and connect over HTTP(S) or SOCKS5 with 99.9% uptime. Try residential and mobile proxies for $1.97.

🏘️ Rotating Residential Proxies
  • 30M+ Premium Residential IPs
  •  170+ Countries
    Every residential IP in our network corresponds to an actual desktop device with a precise geographical location. Our residential proxies are fast and reliable, with 99.9% uptime, and work for a wide range of use cases. You can use country, region, city, ZIP, ISP, ASN and OS fingerprint targeting for our rotating residential proxies, at no extra charge.

See our Rotating Residential Proxies

📍 Static Residential Proxies
  • 24 Countries
    Buy a dedicated static residential IP from one of the 24 countries that we offer proxies in. Keep the same IP for a month or longer, while benefiting from their fast speed and stability.

See our Static Residential Proxies

📳 Rotating Mobile Proxies
  • 4M+ Premium Mobile IPs
  •  170+ Countries
    Access millions of clean mobile IPs with precise targeting by country, region, city, ZIP, mobile carrier, ASN and OS fingerprint, at no extra charge. Get far fewer IP blocks and CAPTCHAs with our 4G and 5G proxies.

See our Mobile Proxies

📱 Dedicated Mobile Proxies
  • 4 Countries
  • 50+ Locations
    Get your own dedicated mobile proxy in one of our supported locations, with unlimited bandwidth and unlimited IP changes on demand. A great choice when you need a small number of mobile IPs and a lot of proxy bandwidth.

See our 4G & 5G Proxies

🌐 Rotating Datacenter Proxies
  • 197,000+ IPs Premium IPs
  •  62 Countries
    On a budget and need to do some simple scraping tasks? Our datacenter proxies are the perfect fit! Get started with as little as $2

See our Datacenter Proxies

♾️ Unlimited Residential Proxies
  • 1M+ Daily Residential IPs
  • 85+ Countries
    Our unlimited residential proxies bill by connection speed, not gigabytes: 100 to 1000 Mbit with unlimited bandwidth, on daily, weekly or monthly plans. Ask us for a 1-hour trial at 50 Mbit before you pick a plan.

See our Unlimited Residential Proxies

proxy locations

30M+ rotating IPs

99.9% uptime - high speed

99.9% uptime.

dedicated support team

24/7 Dedicated Support.

fair price

Fair Pricing.

🏠 Residential Proxies Rotating / Static / Unlimited
📱 Mobile Proxies Rotating and Dedicated
🖥️ Datacenter Proxies Rotating
🌍 IP Pool 30M+ residential + 4M+ mobile IPs
📶 Uptime 99.9% · Live status
💳 Payment Card · PayPal · Crypto · Bank transfer
💬 Support 24/7 live chat · sales@proxyempire.io