正向代理:客户端需要访问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代理服务器,node1:
yum -y install nginx #Nginx依赖软件包zlib、pcre等
yum安装的软件配置文件,默认在/etc/下,
cd /etc/nginx
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服务器首页,代理成功
备注:如果查看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
service httpd restart #重启httpd服务,查看请求日志,请求客户端ip为实际客户端ip。