千家信息网

Nginx 篇章-反向代理

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,讲述反向七层代理的配置文件以及解释Nginx官网:https://www.nginx.com/Centos yum安装nginxyum install nginx -yso,我们先提个问题,What?
千家信息网最后更新 2026年11月02日Nginx 篇章-反向代理

讲述反向七层代理的配置文件以及解释

Nginx官网:https://www.nginx.com/

Centos yum安装nginx

yum install nginx -y

so,我们先提个问题,What?为何要用Nginx实现七层代理,什么是七层代理?

1、有无nginx proxy的区别

传统无nginx web架构:

看下面一张图:

首先,我们有一个域名 www.test_app.com,后端有三台服务器,都运行PHP+Nginx服务,如果要实现三台服务器都提供网站服务,我们需要具备下面几个条件(缺点)。

1、每台web服务器都需要有固定的公网IP地址(成本高)
2、一个域名需要对应多个公网IP(扩展性差)
3、每添加一台web服务器都需要动用dns配置以及购买固定公网IP(灵活性差)

so,缺点很明显了

nginx proxy架构:

这时,我们在前端部署一台nginx proxy(反向代理),就可以解决刚才上面所说的问题,可以在nginx proxy配置proxy pool,称为代理池,里面填写后端web节点的IP:PORT,每次扩展一台Web节点的时候,只需要在该proxy pool中添加IP:PORT,然后在reload一下nginx即可,并且该nginx proxy只需要有一个固定的公网IP即可,DNS只需要绑定该公网IP

2、Nginx Proxy简介
Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass,fastcgi_pass,memcached_pass等,新版Nginx软件支持的方式有所增加。本文主要讲解proxy_pass代理方式。
ngx_http_upstream_module模块允许Nginx定义一组或多组节点服务器组,使用时可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应Upstream组的名字上,具体写法为"proxy_pass http:// www_server_pools",其中www_server_pools就是一个Upstream节点服务器组名字。

upstream模块内部server标签部分参数说明:

模块参数说明
server负载均衡后面的RS地址,可域名或IP
weight服务器权重,权重数字越大表示请求越多,默认为1
max_fils尝试连接后端节点失败的次数,默认为1
backup表示节点作为备份服务器
fail_timeout在max_fails定义次数失败后,距离下次检查间隔时间

3、Nginx Proxy调度算法
静态调度算法:

算法说明
rr轮询,默认调度算法,将请求按顺序分配到不同的后端节点
wrr权重轮询,权重值越大,后端节点接受的请求也就越多
ip_hash会话保持,每个请求按照客户端的IP的Hash结果来分配后端节点

动态调度算法:

算法说明
fair响应时间,根据后端节点的响应时间来分配请求
least_conn最小连接数,根据后端节点的连接数来分配请求
url_hashweb缓存节点,根据访问的URL的hash结果来分配请求

注意调度算法只能使用一种

nginx proxy常见配置文件(多域名):

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    # 这是代理池,池子名:blog_server_pools,将web节点的IP:PORT/域名 添加到此即可    upstream blog_server_pools {                        server 172.16.1.7:80 weight=3 max_fils=3 fail_timeout=5;                    server 172.16.1.8:80 weight=2 max_fils=3 fail_timeout=5;                    server 172.16.1.9:80 weight=1 backup max_fils=3 fail_timeout=5;            }      upstream www_server_pools {                         # 使用调度算法:ip_hash                      ip_hash                     server 172.16.1.10:80  max_fils=3 fail_timeout=5;                     server 172.16.1.11:80 max_fils=3 fail_timeout=5;                     server 172.16.1.12:80 weight=1 backup max_fils=3 fail_timeout=5;              }    server {                  listen       80;        server_name  blog.youngboy.org;        location / {        # 通过proxy_pass 调用对应的代理池        proxy_pass http://blog_server_pools;         # proxy优化参数(下面有解释)        proxy_redirect default;        proxy_set_header Host $http_host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;        proxy_connect_timeout 60;        proxy_send_timeout 60;        proxy_read_timeout 60;        proxy_buffer_size 32k;        proxy_buffers 4 128k;        proxy_busy_buffers_size 256k;        proxy_temp_file_write_size 256k;                   }       }    server {                  listen       80;        server_name  www.youngboy.org;        location / {        proxy_pass http://www_server_pools;         proxy_redirect default;        proxy_set_header Host $http_host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;        proxy_connect_timeout 60;        proxy_send_timeout 60;        proxy_read_timeout 60;        proxy_buffer_size 32k;        proxy_buffers 4 128k;        proxy_busy_buffers_size 256k;        proxy_temp_file_write_size 256k;                   }       }     }

我们会发现。每添加一个server标签(一个站点),都需要将nginx proxy参数粘贴一遍,这样会导致配置冗余
我们可以将proxy优化参数配置写到一个文件中

# vim /etc/nginx/conf.d/http.proxyproxy_redirect default;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;proxy_connect_timeout 60;proxy_send_timeout 60;proxy_read_timeout 60;proxy_buffer_size 32k;proxy_buffers 4 128k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;

在nginx http标签下,使用include来引入刚刚创建的proxy文件

....http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;        include /etc/nginx/conf.d/http.proxy;....}

平滑重启nginx

nginx -s reload

4、Nginx Proxy优化参数

# 设置http请求header项传给后端服务器节点proxy_set_header# 用于指定客户端请求主体缓冲区大小client_body_buffer_size # 表示反向代理与后端节点服务器连接的超时时间,即发起握手等待响应的超时时间proxy_connect_timeout   # 表示代理后端服务器的数据回传时间,即在规定时间内服务器必须传完所有的数据,否则,Nginx将断开这个连接proxy_sed_simeout   # 设置Nginx从从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间,其实是Nginx已经进入后端的派对之中等候处理的时间proxy_read_timeout  # 设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小proxy_buffer_size   # 设置缓冲区的数量和大小。Nginx从代理后端的服务器获取的响应信息,会防止缓冲区proxy_buffers   # 用于设置系统很忙时可以使用的proxy_buffers大小,官方推荐的大小为proxy_buffers*2proxy_busy_buffers_size # 指定proxy缓存临时文件的大小proxy_temp_file_write_size  
服务 服务器 节点 代理 时间 大小 算法 参数 调度 配置 文件 缓冲区 公网 分配 缓冲 域名 方式 权重 模块 标签 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 广州万易互联网科技有限公司 腾讯阿里互联网科技 互联网科技论文 奔汉互联网科技 互联网金融 科技创新 互联网科技网站 滨湖区互联网智能科技产品供应 科技赋能互联网健康 隆华科技工业互联网 科技互联网大厂 港股科技和互联网 上海宁丞科技互联网 广西互联网科技孵化中心 互联网科技的全部知识 烟台灵鸽互联网科技有限公司 黑科技 体验场景 互联网大会 信承诺互联网科技有限公司 陕西九四连强互联网科技有限公司 米泉互联网科技专业怎么样 互联网科技公司排名 广东万易互联网科技有限公司惠州分公司 西安纸贵互联网科技有限公司 温州喔噻互联网科技有限公司 江阴互联网智能科技产品进口 特约风豹互联网科技为什么扣费 恒生互联网科技业指数调整周期 广州千川互联网科技有限公司 广州燕处互联网科技有限公司 每日互联网科技新闻
0