Posts tagged ‘反向代理’

Windows及Linux下nginx反向代理的配置

网上nginx解释:

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

1、Windows下nginx反向代理的配置

最早nginx没有windows版本,后期才增加的。本次案例的具体如下图,在内网放置一台nginx反向代理服务器,代理内网的两个站点http://10.10.10.88http://10.10.10.89。具体配置如下:

proxy11

首先安装完win2003操作系统,将外网口配置为192.168.5.2/24,默认网关192.168.5.1;将内网口IP配置为10.10.10.1,默认网关不配置。

再去nginx download上下载最新版本,目前最新版本为1.6.0,下载后为一个ZIP压缩包,将压缩包解压至D盘根目录下

proxy12

最后进入D盘的nginx-1.6.0下的conf文件夹,用记事本打开nginx.conf,在最后面添加如下文本:

server { listen 80; server_name   www.test1.com; location / { proxy_pass http://10.10.10.88:80; }}
server { listen 80; server_name   www.test2.com; location / { proxy_pass http://10.10.10.89:80; }}

添加完成后,使用DOS窗口,如下图,切换至D盘nginx目录下,使用start nginx启动nginx,并用tasklist /fi "imagename eq nginx.exe"命令查看是否正在运行,如下图有两行信息即为启动着。这时,就可以在外网使用www.test1.comwww.test2.com域名来访问内网的这两台WEB服务器。

proxy13

nginx for windows下常用命令:

nginx start                                //启动nginx
nginx -s stop                              //停止nginx
nginx -s reload                            //重新加载配置文件
nginx -s quit                              //退出nginx
tasklist /fi "imagename eq nginx.exe"      //查看nginx进程状态

 

2、Linux下nginx反向代理的配置

拓扑和Windows版的一样,只是将代理服务器的操作系统改成了RedHat5.4 64位,如下图所示

proxy14

具体配置如下:

首先完成RedHat5.4 64位操作系统的安装,安装时,选择最大化安装,完成后,开始下载三个软件包,如下:

1. gzip 模块需要zlib库 (下载: http://www.zlib.net/)
2. rewrite 模块需要pcre库(下载: http://www.pcre.org/)
3. nginx for linux(下载: http://nginx.org/en/download.html)

下载后通过SecureFX首先将zlib-1.2.8.tar.gz、pcre-8.35.tar.gz、nginx-1.6.0.tar.gz上传至/tmp目录中。然后进入终端开始安装这三个软件包:

(1)zlib软件包安装
[root@localhost tmp]# tar -zxvf zlib-1.2.8.tar.gz
[root@localhost tmp]# cd zlib-1.2.8
[root@localhost zlib-1.2.8]# ./configure
[root@localhost zlib-1.2.8]# make
[root@localhost zlib-1.2.8]# make install

(2)pcre软件包安装
[root@localhost tmp]# tar -zxvf pcre-8.35.tar.gz
[root@localhost tmp]# cd pcre-8.35
[root@localhost pcre-8.35]# ./configure
[root@localhost pcre-8.35]# make
[root@localhost pcre-8.35]# make install

(3)nginx软件包安装
[root@localhost tmp]# tar -zxvf nginx-1.6.0.tar.gz
[root@localhost tmp]# cd nginx-1.6.0
[root@localhost nginx-1.6.0]# ./configure –prefix=/usr/local/nginx –with-http_ssl_module –with-pcre=../pcre-8.35 –with-zlib=../zlib-1.2.8
[root@localhost nginx-1.6.0]# make
[root@localhost nginx-1.6.0]# make install

完成安装后开始编辑nginx.conf

[root@localhost nginx-1.6.0]# cd /usr/local/nginx/conf
[root@localhost nginx-1.6.0]# vi nginx.conf

在最后添加如下文本:
server { listen 80; server_name   www.test1.com; location / { proxy_pass http://10.10.10.88:80; }}
server { listen 80; server_name   www.test2.com; location / { proxy_pass http://10.10.10.89:80; }}

启动nginx:
[root@localhost /]# /usr/local/nginx/sbin/nginx &
[1] 8845
[root@localhost sbin]#
[1]+  Done                    /usr/local/nginx/sbin/nginx

查看nginx进程是否正在运行:
[root@localhost sbin]# ps -ef | grep nginx
root      8846     1  0 19:41 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    8847  8846  0 19:41 ?        00:00:00 nginx: worker process     
root      8849  3339  0 19:41 pts/1    00:00:00 grep nginx
[root@localhost sbin]#

完成后,就可以在互联网使用www.test1.comwww.test2.com来测试代理是否正常。

正向代理、反向代理

网上查了下正向代理与反向代理的区别,理解如下:

1、正向代理

内部局域网用户访问互联网时,一般都是经过防火墙或路由器地址转换后直接访问某个站点,如下图所示:

proxy01

这时,如果在客户端与出口防火墙/路由器之间架设一台代理服务器,客户端经过这台代理再访问互联网,即该代理为正向代理,这里代理服务器有两种位置的放法,一种是直接将出口设备去除,由代理服务器来替代,如下图:

proxy08

另一种是出口不撤,直接在客户端与防火墙之间增加一个代理,客户端向代理服务器请求,代理通过出口防火墙再去向互联网的WEB服务器请求相关内容,如下图:

proxy09

简单来讲,正向代理是让内部用户通过此代理来访问外部网络,保护内部用户的真实信息。

客户端代理服务器设置方法,使用最多的IE浏览器设置如下,打开浏览器Internet选项,选择“连接”->“局域网设置”, 在代理服务器一栏中填入代理的IP地址。

proxy04

proxy05

以前用过的代理软件为Squid

 

2、反向代理

反向代理正好相反,它是让互联网的用户访问局域网的内部局域网的WEB服务器时使用。

当没有代理时,客户端通过互联网直接访问局域网内的WEB服务器,如下图

proxy06

当在局域网出口防火墙/路由器与WEB服务器之间架设一台代理服务器,这时互联网的客户端访问代理服务器,代理服务器再去局域网内的WEB服务器相通信,如下图。

proxy10

 

网上对于正向代理与反向代理的解释:

1.什么是正向代理和正向代理服务器?

正向代理就是通常所说的代理,是某台电脑通过一台服务器来上Internet网的这种方式,其中这台电脑就叫客户机,这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在这种方式中,你是主动的,网站是被动的,网站那里不能得到你的真实ip地址。(通俗讲法)

正向代理服务器。它只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器(一般在IE-Internet选项-连接-局域网设置),并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

2.什么是反向代理和反向代理服务器?

反向代理就是网站通过一台服务器发布到公网,供用户访问。用户直接访问那台反向代理服务器,然后通过那台服务器访问到网站。用户无法得到网站的真实IP地址。这样就保护了网站服务器,如果您有台服务器在国内又不想让人找到IP,就可以在国外搭建一台反向代理服务器。一个反向代理服务器将很多网站解析到同一 ip地址上。(通俗讲法)

技术讲法,普通的Web代理服务器是不支持外部对内部网络的访问请求的。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时的代理服务器称为反向代理服务器,对外表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

反向代理用于外部网络访问内部网络时使用,正向代理用于提供内部网络对外部网络的访问能力,并可以使用包过滤拒绝其他方式访问外部网络。