分享

9、Nginx反向代理

 拿破仑小子 2018-05-13

代理也称正向代理,是一个位于客户端和目标服务器之间的代理服务器,客户端将发送的请求和指定的目标服务器提交给代理服务器,然后代理服务器向目标服务器发起请求,并将获得的响应结果返回给客户端的过程。

相对于代理服务,反向代理对于客户端而言就是目标服务器,客户端向反向代理服务器发送请求后,反向代理服务器将该请求转发给内部网络上的后端服务器,并将从后端服务器上得到的响应结果返回给客户端。

代理和反向代理两者特性:

安全性:正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这给网络安全带来了极大威胁,而反向代理的客户端只能通过外网来访问代理服务器,并不知道自己访问的是一个代理服务器,反向代理将真正的处理放在内网中,有效提供了网络安全;

功能性:正向代理的主要用途是为在防火墙内的局域网用户提供访问Internet的途径,而反向代理的主要用途是将防火墙后的服务器提供给Internet用户访问,还可以为多个后端服务器提供负载均衡功能和缓存功能等。

反向代理服务器配置:

在Nginx服务器中,反向代理的配置非常简单,最主要的指令时:proxy_pass,用于设置后端服务器的地址,该地址中包括传输数据使用的协议,服务器主机名以及可选的URI资源等。

proxy_pass通常在location块中进行设置。

1、准备服务器

准备3台服务器,并且全部安装Nginx服务器。

2、配置反向代理

在其中一台服务器中配置两个不同的域名,用于请求时,将请求代理转发到指定服务器中,

例如:请求http://.test时,将请求代理到32服务器中。

具体配置如下(/usr/local/nginx/conf/nginx.conf):

9、Nginx反向代理

请求http://test.时,将请求代理到33服务器中。

9、Nginx反向代理

在物理机hosts文件中配置两个 域名对应的IP地址

9、Nginx反向代理

重启服务器,通过浏览器验证:

test.

9、Nginx反向代理

.test

9、Nginx反向代理

Nginx中对于反向代理的设置还提供了其他辅助指令:

  • proxy_set_header:在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息;

  • proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间;

  • proxy_read_timeout:配置Nginx向后端服务器组发出read请求后,等待响应的超时时间;

  • proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待响应的超时时间;

  • proxy_redirect:用于修改后端服务器返回的响应头中的Location和Refresh;

通过proxy_set_header指令的使用,配置实现将客户端IP传递给后端服务器:

location / {

proxy_pass http://192.168.44.33;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

  • $remote_addr:用于获取客户端真实的IP地址,

  • $proxy_add_x_forwarded_for:用于在客户端请求头字段后添加客户端地址,使用逗号分隔,且当不存在客户端请求头字段时,该变量等同于变量$remote_addr;

上篇:8、Nginx+Tomcat环境配置--Tomcat安装配置,动静分离

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多