Modifying nginx for use as transparent, forward proxy

Igor Sysoev is at
Thu Sep 10 13:35:37 MSD 2009

On Thu, Sep 10, 2009 at 02:12:55AM -0700, Mark Preston wrote:

> Hi All,
> My understanding is that nginx cannot be used as a forward proxy out of the
> box. Is this correct?
> If so, my thinking is that by making some small modifications to
> ngx_http_proxy_module.c, it would be possible to have a nginx.conf file with
> "proxy_pass asdf", where asdf ends up being ignored with the new surgical
> edits to ngx_http_proxy_module.c. Instead of doing the complex lookups to
> figure out the backend server, it would simply pull out the "Host" from the
> browser/client request being made, and use that as the appropriate URL to
> fetch.
> Would this work?
> (As a background, I currently have a squid + ICAP setup in transparent proxy
> mode, and it works fine for proof-of-concept, but falls over in terms of
> performance. As a result, I'm trying to use nginx as a replacement. And with
> the http_sub module, I'm thinking I don't even need ICAP, since we only add
> a small snippet after the HTML head section of every web page.)
> If there are better / easier ways of getting nginx to work as a forward
> proxy, please let me know, and I'd be happy to contribute the edits back.
> Thanks!
> Mark
> PS. If the response is in Russian, that's cool too. I can read it just fine
> (and speak it), but my writing is rather poor. :-)

Although writing in Russian is more easy for me I answer in English,
since this is English mailing list.

You may try the following configuration:

http {

     resolver; # do not forget to run named on localhost

     server {
         location / {
             proxy_pass  http://$http_host$request_line;
             sub         ...

However, I can not say that it will work without any issue.

Igor Sysoev

More information about the nginx mailing list