10. Nginx实现反向代理

10. Nginx实现反向代理,第1张

反向代理: reverse proxy, 指的是代理外网用户的请求到内部的指定的服务器, 并将数据返回给用户的一种方式, 这是用的比较多的一种方式

Nginx除了可以为企业提供高性能的web服务之外, 另外还可以将Nginx本身不具备的请求通过某种预定义的协议转发至其他服务器处理, 不同的协议就是Nginx服务器与其他服务器进行通信的一种规范, 主要在不同的场景使用以下模块实现不同的功能

生成环境部署架构:

访问逻辑图:

Nginx反向代理>

Nginx proxy_set_header
允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义:

如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range”, 和 “If-Range” 将不会被代理服务器传递。
一个不会变化的“Host”头请求字段可通过如下方式被传递:

然后,当字段不在请求头中就无法传递啦。在这种情况下,可通过设置Host变量,将需传递值赋给Host变量。

此外,服务器名称和端口一起通过代理服务器传递。

如果请求头的存在空的字段将不会通过代理服务器传递出去。

总结:proxy_set_header 就是可设置请求头-并将头信息传递到服务器端。不属于请求头的参数中也需要传递时 重定义下就行啦。

测试jsp 想获取客户端IP、客户端port、代理服务器IP、代理服务器port

测试结果

Nginx日志

其中客户端IP不能获取到,而通过requestgetRemoteAddr();获取的IP是代理服务器IP,而不是客户端IP,而在nginx中$remote_addr变量的值是客户端的IP,可见remoteaddr没有传递。
而server_port值也不对,当前值为5800,当前打印出的是80。
而当前代理为 >问题解决非常简单,在宝塔服务器站点配置中,对nginx站点配置增加如下配置信息:

1、location 后面的/api是匹配本地url中带有指定目录所用;
2、 rewrite ^/api/()$ /$1 break; 这一段是用来进行匹配修改的,意思是去除掉后面的api
3、 proxy_pass >

Nginx是一款自由的、开源的、高性能的>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13213973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-21
下一篇 2023-06-21

发表评论

登录后才能评论

评论列表(0条)