当前位置:首页 > CN2资讯 > 正文内容

Nginx 篇章-反向代理

2天前CN2资讯

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

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_hash web缓存节点,根据访问的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 ; 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 ; 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.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;

在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*2 proxy_busy_buffers_size # 指定proxy缓存临时文件的大小 proxy_temp_file_write_size
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24883.html

    分享给朋友:

    “Nginx 篇章-反向代理” 的相关文章

    GCE教程:快速掌握基因组评估软件的安装与使用技巧

    1.1 GCE软件概述 GCE(Genome Characteristics Estimation)是一款由华大基因开发的基因组评估软件。它的主要功能是通过分析二代测序数据,评估基因组的特征,如基因组大小、杂合度等。GCE以其高效、准确的特点,成为基因组研究中不可或缺的工具之一。无论是科研人员还是生...

    VPS商家全攻略:选择适合你的虚拟专用服务器

    VPS商家概述 在数字化时代,VPS(虚拟专用服务器)服务逐渐成为企业和个人用户的重要选择。VPS不仅为用户提供了灵活性,而且在性能、控制权和安全性上都优于传统的共享主机。这使它成为许多需要独立环境来运行网站或应用程序的用户的理想解决方案。 选择VPS的用户通常追求更高的稳定性和可靠性。相比于共享主...

    hncloud:助力企业数字化转型的云计算服务提供商

    在数字化浪潮席卷全球的今天,hncloud(华纳云)应运而生,成为一家备受瞩目的全球数据中心基础服务提供商。隶属于香港联合通讯国际有限公司的hncloud,凭借其在行业中的深厚积淀和技术实力,逐渐发展成为一颗闪耀于云计算领域的明星。作为APNIC和ARIN的会员单位,hncloud自有ASN号,为用...

    AS4837和AS9929线路在国际通信中的优势与应用分析

    在了解AS4837线路的历史背景时,回顾其起源与发展非常重要。AS4837线路,通常被称为中国联通的骨干网线路,最早始建于20世纪90年代。那时,随着互联网的兴起,全球对网络基础设施的需求不断增加,中国决定建立更强大的国际连接,通过AS4837将中国大陆与香港、美国、日本、韩国等多地紧密相连。这个决...

    阿里云新用户优惠活动详解:如何高效利用云服务

    作为阿里云的新用户,我感到兴奋,因为阿里云为像我这样的新手提供了许多优惠和服务,让我能轻松地体验云产品。首先,我们来聊聊什么是阿里云新用户。简单来说,阿里云会通过是否购买过云产品来判断我是否是新用户,而并非仅仅看注册时间。这意味着,只要我没有购买过云服务,就能享受到新用户的特权。 新用户的权益和优惠...

    IP检测服务:简化网络体验与保护用户隐私

    IP检测服务是当今网络环境中不可或缺的一部分。简单来说,它帮助用户或开发者迅速获取他们的设备公网IP地址,同时提供各种网络信息。这项服务以其高效、便捷和免费的特点,吸引了众多用户和企业进行使用。 想获取公网IP地址往往需要复杂的步骤,而IP检测服务的出现使这个过程变得轻松。它支持多种返回格式,包括纯...