寂夜清风 发表于 2013-10-16 15:20

[ZT]谈谈Nginx最简单的高效反向代理配置

  Nginx在HTTP服务器应用中,比Apache的负载能力要高几倍,相信这个对于一般用户也已经相当了解,但Nginx除了可以作为一款高性能的HTTP应用服务器以外,它还是一款非常流行的反向代理服务器。这一点应用上,使用的人还不是很多。下面我们以Twitter的反向应用为例,介绍一下怎么用Nginx搭建一个反向代理。

什么叫反向代理?

  相信不少用户都用过代理服务器,特别是校园网用户。那么反向代理又是什么意思?

  反向代理其实也属于代理服务器的一种,只不过它不像普通代理那样,需要用户填写IP地址,而是直接通过该代理服务器来接受Internet上的连接请求,然后反向将请求转发给内部(或其他)网络上的服务器,在收到服务器反馈以后,又将得到的内容反馈给请求的客户端。是不是感觉和我们用的代理服务器差不多?

  小蓝觉得,此反向的最大区别,在于一般代理服务器,我们是知道它是代理服务器,并通过它来请求远程内容。而反向代理,我们很可能不太了解它是代理服务器,有时甚至认为它就是我们请求的内容。因此,反向代理,可以实现隐藏真正服务器的目的。

简单几行代码实现反向代理:

  由于国内访问不了twitter.com,那么我们可以使用反向代理,达到间接访问的目的。比如搭建一个t.3cdma.com的“网站”,来间接实现访问twitter,当然,这只是一个案例,并不是真的搭建,不然IP很容易就会被“和谐”。

  首先,需要将t.3cdma.com作A记录解释到服务器/VPS的IP上。如果反向访问的是比较敏感的内容,建议大家不要用简单的域名,尽量复杂一些,只要自己知道就可以了,比如使用ewqkerj34e2.3cdma.com,这样的域名很难猜测得到。

  然后,修改Nginx的配置文件,添加一个类似虚拟主机配置的内容:

server
{
    listen          80;
    server_name   t.3cdma.com;
    location / {
      proxy_pass            http://twitter.com/;
      proxy_redirect          off;
      proxy_set_header      X-Real-IP       $remote_addr;
      proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

  添加完成后保存一下文件,然后执行下面命令检查一下配置是否正常:

/usr/local/nginx/sbin/nginx -t

  如果显示下面内容,则表示配置正常:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok   

configuration file /usr/local/nginx/conf/nginx.conf test is successful

  最后,执行下面命令重启一下Nginx,让配置生效以后,就可以使用t.3cdma.com来访问twitter了。

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`



http://www.3cdma.com/734.html
页: [1]
查看完整版本: [ZT]谈谈Nginx最简单的高效反向代理配置