正向代理:客户端需要访问Internet上的某个网站,访问不了,从而访问Nginx代理服务器,Nginx代理服务器访问目标网站,并从中取出访问数据返回给客户端,目标网站获取的访问者的信息实际上是Nginx代理服务器的,但是使用正向代理服务器,客户端需要自行设置。

反向代理:Nginx反向代理后端的一个或多个web服务,客户端访问web服务时,直接访问的Nginx反向代理服务器,而Nginx再根据调度策略,将请求分发至后台实际web服务器。

环境:centos7.2

Nginx:1.12.2

node1_ip:192.168.169.103(Nginx代理服务器)

node2_ip:192.168.169.154

node2安装web服务器:

 yum -y install httpd

Apache默认首页在/var/www/html下的index.html配置文件,若没有,新建一个index.html并写入测试语句:

this is 192.168.169.154 web server,然后开启http服务

service httpd start

浏览器访问node2的http,看到首页

Nginx反向代理web服务器-----简单代理_nginx

 

配置Nginx代理服务器,node1:

yum -y install nginx #Nginx依赖软件包zlib、pcre等

yum安装的软件配置文件,默认在/etc/下,

cd /etc/nginx

Nginx反向代理web服务器-----简单代理_nginx_02

nginx.conf为Nginx的默认配置文件

查看nginx.conf,配置文件中有:

 include /etc/nginx/conf.d/*.conf;  #代表会加载在此路径下的所有的conf文件,即conf.d下的所有conf文件

cd conf.d/

touch test.conf   #新建一个test 文件,尝试代理node2的web服务器

vim test.conf

 server {

        listen       80;                    #监听端口

        server_name  _;               #

        location / {

               proxy_pass http://192.168.169.154:80;         #代理的实际ip+端口

               proxy_set_header  X-Real-IP  $remote_addr;   #设置web服务器取得的客户端的实际ip地址,#  不设置,查看web服务 的日志,会发现,请求web服务的ip是Nginx代理服务器的ip。     

   }

}

#保存退出

service nginx start

浏览器访问Nginx,出现node2,web服务器首页,代理成功

Nginx反向代理web服务器-----简单代理_apache_03

备注:如果查看web服务器日志,发现请求的客户端ip仍然是Nginx代理服务器的ip,需要设置web服务器的主配置文件,例Apache的为/etc/httpd/conf下的httpd.conf

其中配置日志的字段为,默认黄框内的配置为,将其中的“%h”设置为“%{X-Real-IP}i”

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Nginx反向代理web服务器-----简单代理_apache_04

service httpd restart #重启httpd服务,查看请求日志,请求客户端ip为实际客户端ip。