Nginx反向代理常用配置

Nginx反向代理常用配置,第1张

在计算机中,客户端A与服务端B进行同行,中间加入中介C进行数据传递,则形成了代理。来个浅显易懂的比喻,三年级二班小明和小花谈恋爱,由于小明和小花座位离的太远,这时候需要小王在中间传递纸条,在这个爱情故事中小王在中间充当了代理作用。

正向代理中,客户端通过代理服务器从服务端收发数据,即为正向代理。

举个栗子:有一个局域网,但是只有主机局域访问外部网络的权限,现在所有的机器都需要访问外部网络,通过将主机设置为代理服务器,让所有的机器通过主机可以访问外部网络,即称为正向代理。

反向代理中,代理服务器替服务端收发数据,所有的请求与相应都经过反向代理,可以用来实现数据缓存,负载均衡等。

举个栗子: 张三开了一个保险公司(服务端),一开始公司业务小,一个人接电话就够了,后来随着公司扩张,每天无数电话打进来,张三招了一个客服李四(代理),张三把和客户对接的事情都交给了李四,形成了反向代理。

配置项很多,挑几个几个常用的配置依次介绍:location、proxy_set_header、rewrite、proxy_pass

当然还有”!“、”^“匹配,用的比较少,这里不做说明

这里还有很多数据,不一一说明

包含3个参数:

用法示例:

301重定向表示永久性重定向,对于SEO相较302来说比较友好,这里不做过多说明。

nginx doc

nginx rewrite 配置

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

反向代理有以下优点:

1、可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器。

2、通过缓存静态资源,加速Web请求。

3、实现负载均衡。顺便说下,目前市面上,主流的负载均衡方案,硬件设备有F5,软件方案有四层负载均衡的LVS,七层负载均衡的Nginx、Haproxy等。

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

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

生成环境部署架构:

访问逻辑图:

Nginx反向代理http服务:

1. proxy_pass

2. proxy_hide_header field

修改前, 响应报文头部会携带ETag信息

修改后ETag信息被隐藏

3. proxy_pass_header field

4. proxy_pass_request_body

5. proxy_pass_request_headers

6. proxy_set_header

由于proxy_set_header只是修改了请求报文的头部信息, 添加了自定义的字段, 因此, 还需要在后端服务器修改日志定义格式, 才能方便将客户端ip记录到日志信息中

注意1:通过set_proxy_header自定义变量只是给请求报文添加了一个自定义的字段, 其字段值是人为根据系统内置变量设定的

注意2: 这种方法, 在多级代理的情况下, 并不能将客户端ip, 逐层的传给后端服务器, 而是需要利用$proxy_add_x_forwarded_for变量实现

注意3: 如果一定要使用proxy_set_header去传递客户端ip和每一层代理的ip地址, 那么需要在每一层nginx代理都开启proxy_set_header, 并且设置不同的自定义变量去引用nginx自带变量$remote_addr, 这样每一级nginx都会记录上一级, 也就包括客户端的ip地址, 同时, 在后端服务器的日志格式中, 要添加多个nginx自定义的变量, 这样也可以把客户端ip和中间经过的代理的ip全部传递给后端的服务器

proxy_add_x_forwarded_for实现多级代理ip地址透传示例: 需要在每一级代理都开启

实验环境:

7. 有关反向代理时间的几个参数

8. proxy_ignore_client_abort

9. hash表大小的设置

客户端 ----- http协议 ------- nginx(代理服务器,10.0.0.86) ----- http --- apache (10.0.0.85)

客户端, 通过访问nginx上定义的虚拟主机中的server_name域名, 通过内部定义的location匹配规则, 被转发到10.0.0.85服务器

代理服务器与后端服务器连接出现问题可能发生的报错:

如果后端服务器想把图片资源放到固定的目录下, 也可以自定义, 比如存到/var/www/html/static, 那么nginx的location就要修改为如下:

缓存功能相关参数:

实验环境:

proxy_pass 可以让Nginx将客户端请求转发至后端单台服务器, 但是无法转发至特定的一组服务器, 而且不能对后端服务器提供相应的服务器状态监测.

Nginx可以基于 ngx_http_upstream_module 模块提供服务器分组转发, 权重分配, 状态监测, 使用不同的调度算法等高级功能

关于ip_forward

注意: 本实验过程要先关闭缓存

访问固定的URI会被调度到相同的服务器


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/754965.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存