nginx架设http代理


squid透明代理已经向大家介绍过了,前两天在Libing大哥的博客逛的时候发现原来也可以用nginx来作透明代理(个人觉得叫正向代理更合理些),学习了下,又丰富了下,给大家分享一下。

server {
listen 81;
location / {
proxy_pass http://$http_host$request_uri;
}
}


步骤非常简单,只要新建一个主机,随便监听一个端口就可以,但是不能加主机名,因为我们是正向http代理,如果加了主机名,那岂不是就只能访问那几个网站了吗,呵呵。

$http_host – 主机名,即是访问该服务器的域名
$request_uri – 主机名后面跟的所有的东西

例如:http://www.kangzj.net/preminder/ 蓝色部分就是$http_host 红色部分就是$request_uri


然后怎样,不用我教了吧,打开IE选项设置代理即可利用代理上网啦!
当然,如果你想限制用户只能上某几个网站,那么就加上:

server_name www.163.com g.cn;

等等就可以啦,是不是很方便呢。
如果把代理端口设置成80就可以作为透明代理来使用了(严格来说并不是透明代理,反而更像反向代理):
但是需要我们修改无敌的hosts文件了,为什么?——因为我们要访问的网站的域名并不是指向我们的nginx服务器啊~OK改好,这样子,所有的网站就好像工作在那台nginx服务器似的,可以上啦!
说到这里同学们可能会有点乱了,正向代理、反向代理、透明代理……最后再跟大家明确下:

  1. 这三种方式的代理本质是相同的:都是代理服务器代理客户端到相应的互联网服务器取东西(浏览、下载等)。
  2. 代理使用的方式是不同的:正向代理是在IE或者其它浏览器设置代理选项,浏览器向代理服务器请求所有网页,由代理服务器代理取回网页;透明代理跟正向代理原理一样,只不过主机将代理服务器当做网关使用,并不需要设置代理选项;而反向代理是为一个(或几个)网站架设的代理,网站好像就在代理服务器端似的,多用来给网站加速用(跟我上面讲的所谓透明代理是一个意思)。

不会越说越乱吧,呵呵,其实不用在定义上这么纠缠,在有用的时候想到有方法可以实现就可以了。
Nginx真的很好用、很强大,你不妨试一下:-)


Posted

in

by

Comments

33 responses to “nginx架设http代理”

  1. versicherung Avatar

    Verkennt bei weitem nicht die technischen Ideen des menschlichen Geistes! Darueber hinaus zensiert froehlich weiter.

  2. 林林总总 Avatar
    林林总总

    为了让使用代理上IEEE, 做了如下的修改:
    使用了nginx做HTTP代理, 根据原始的nginx.conf修改了
    1. 端口为8081,
    2. 屏蔽server_name,
    3. 修改了 location /, 如下
    location / {
    root html;
    index index.html index.htm;
    #proxy_buffering off;
    proxy_pass http://www.ieee.org;
    }
    结果悲剧了…输入任何的网站都会被定向到ieee网站, 并且在里面输入搜索,什么都搜不到!(比如搜索lna, 在正常能用,代理就是搜不到)
    楼主能搞定不?

  3. frog76 Avatar
    frog76

    我的QQ:414089953

  4. frog76 Avatar
    frog76

    非常想请教你,能与我联系一下吗???

  5. s3 Avatar
    s3

    交流下,Q:1123351868
    有关nginx做HTTP代理,权限验证问题。

  6. domi Avatar
    domi

    按照博主文章,配置Nginx做正向代理不能使用啊
    listen 80 或者 其他端口都不行啊
    博主能给个自己的配置文件吗……

    1. domi Avatar
      domi

      随便问一下 网上提供的ipv6透明代理是用nginx还是squid还别的。。

    2. kangzj Avatar

      @domi, 有些版本确实 是不行的;用squid多一些吧,squid3.1已经默认支持ipv6

      1. domi Avatar
        domi

        @kangzj, 哦,如此啊,我换一下试试 感谢~~ 🙂

  7. limtzone Avatar
    limtzone

    我想做一个nginx与squid的协同工作的代理系统,nginx作为反向代理,squid作为正向代理,请问该如何做,nginx反向代理配置具体要如何配置?

    1. kangzj Avatar

      @limtzone, 最简单的:
      server {
      listen 80;
      server_name cde.com;
      access_log off;
      location / {
      proxy_pass http://abc.com;
      }
      }

      1. 而莪我如 Avatar
        而莪我如

        谢谢楼主
        我还有个问题
        由于proxy_pass http://twitter.com;后还是上不去,因为要通过HTTP代理,才能访问twitter
        我的问题是nginx是否能够帮忙通过某个http代理,使得用户也可以透明访问到http://twitter.com,而不用设置那个http代理。

  8. java自由人 Avatar
    java自由人

    额 就是浙大的代理 我试过了 火狐的一个插件可以做到 我改写脚本之后确实可用 就是仍不支持cookie

    1. kangzj Avatar

      @java自由人, 嗯,多加几个虚拟机,或者用泛域名应该可以解决

  9. java自由人 Avatar
    java自由人

    我知道一个apache服务器www.baidu.com.******.com就是说无论你在什么网址后面加上这个后缀都可以通过这个服务起来连接 ,ping http://www.baidu.com.******.com得到的ip也都是一样的就是说
    ping http://www.baidu.com.******.com
    ping http://www.google.com.******.com
    ping http://www.163.com.******.com的ip是一样的所以我就分析不了 这个代理的用法了 每次想打开网站都要加上后缀
    点击下一个连接后缀就没了 我又得加上,很麻烦
    想问是否有什么软件或者插件可以达到目的
    或者你要是知道如何使用这种apache服务器也请告诉我
    已经抓包分析 没看出什么 这个代理可以下东西 但就是需要加后缀 我在想如果用插件或软件配置一个将环境 让本机所有数据通过这个代理发出就好了
    谢谢
    直接输入那个ip的结果Fedora Core Test Page
    This page is used to test the proper operation of the Apache HTTP server after it has been installed. If you can read this page, it means that the Apache HTTP server installed at this site is working properly.

    1. kangzj Avatar

      @java自由人, 可以通过动态语言来获取数据,然后把相关的网址替换掉,再输出即可;或者改hosts,呵呵

  10. 我买糕的 Avatar

    师兄犯错误鸟 – –
    必须在http字段内指定一个DNS服务器 即resolver代理才能正常工作。
    否则代理将不能正常解析主机名 – -。
    我发现我非常适合做大材小用这种事情……
    不管是squid还是nginx全部被我拿来做代理了……不过今天仔细看了一下,nginx的文件还真是很简洁啊……

    1. kangzj Avatar

      @我买糕的, 是吗,呵呵,我原先没有加,也能用哦,不知道怎么回事;是啊,用惯了nginx都不想用apache了;squid,nginx,apache我也都用过了,呵呵 😐

  11. 蓝冰 Avatar
    蓝冰

    收藏,慢慢搞。

    1. kangzj Avatar

      @蓝冰, 特喜欢nginx的设置方式,很清楚明白~

  12. Lxhome Avatar

    不懂这方面的东西,路过》

    1. kangzj Avatar

      @Lxhome, 呵呵,谢谢支持啊

  13. houkai Avatar

    看来我用过 正向代理 反向代理 没有用过透明代理
    看看 我的反向代理 http://w92.houkai.com/

    1. kangzj Avatar

      @houkai,
      kangzj@xinqing:~$ curl –head http://w92.houkai.com
      HTTP/1.1 500 Internal Server Error
      Date: Thu, 17 Sep 2009 02:55:49 GMT
      Server: Google Frontend
      Content-Type: text/plain
      Cache-Control: private, x-gzip-ok=””
      Transfer-Encoding: chunked
      Connection: close
      怎么做的啊?

      1. houkai Avatar

        @kangzj, 呵呵 刚才我那个网站能打开吗?我只是在phpnow(阿帕奇)里面设置了一下,你没就他的ip是北大教育网的吗?
        我没用python呀?

        1. kangzj Avatar

          @houkai, 嗯,还以为是Google上做的呢,呵呵;能上的;在你博客问了你个问题,你去看看

  14. joojen Avatar

    太专业了,看不懂

    1. kangzj Avatar

      @joojen, 就是架代理~只不过是用nginx架

  15. zwwooooo Avatar

    沙发!只记方法就可以了,管他正向、反向、透明、半透明……呵呵

    1. kangzj Avatar

      @zwwooooo, 说得支,呵呵,弄清楚也没用

  16. 我买糕的。 Avatar

    友情飘过
    准备架个vpn给手机用……
    这是一个神奇的手机……因为他支持vpn……但是不支持普通代理- –

    1. kangzj Avatar

      @我买糕的。, 我开了vpn,联系我告诉你账号~

Leave a Reply

%d bloggers like this: