Nginx 负载均衡 配置全过程

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介:

Nginx平台搭建:Nginx+mysql+php-fpm搭建高性能Nginx平台

前端Nginx:192.168.93.137

后端web1:192.168.93.138

后端web2:192.168.93.139

前端nginx配置:

http {
      ……
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 16k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;

       upstream  www.lihuipeng.com  {
               #server   192.168.93.137:80;
               server   192.168.93.138:80;
               server   192.168.93.139:80;
       }


       upstream  
www.lihuipeng007.com  {
               #server   192.168.93.137:80;
               server   192.168.93.138:80;
               server   192.168.93.139:80;
       }


      server
       {
               listen  80;
               server_name  
www.lihuipeng.com;

               location / {
                        proxy_pass        
http://www.lihuipeng.com;
                        proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               }

               log_format  lihuipeng  '$remote_addr - $remote_user [$time_local] $request '
                                 '"$status" $body_bytes_sent "$http_referer" '
                                 '"$http_user_agent" "$http_x_forwarded_for"';
               access_log  /home/logs/www.lihuipeng.log  lihuipeng;
       }

      server
       {
               listen  80;
               server_name  
www.lihuipeng007.com;

               location / {
                        proxy_pass        
http://www.lihuipeng007.com;
                        proxy_set_header   Host             $host;
                        proxy_set_header   X-Real-IP        $remote_addr;
                        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
               }

               log_format  lihuipeng007  '$remote_addr - $remote_user [$time_local] $request '
                                 '"$status" $body_bytes_sent "$http_referer" '
                                 '"$http_user_agent" "$http_x_forwarded_for"';
               access_log  /home/logs/www.lihuipeng.log  lihuipeng007;
       }

}

通过upstream  名字 {}定义后端web的负载机器,然后在虚拟主机中通过 proxy_pass http://名字; 来使用upstream,再自定义一下日志格式,以获取用户的IP

后端web配置:

         server
        {
                listen       80;
                server_name www.lihuipeng.com;
                index index.html index.php;
                root  /home/www/www.lihuipeng.com;
                access_log  /home/logs/access_www.lihuipeng.com.log;

                if (-d $request_filename){
                        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }

                error_page   500 502 503 504 404 403 http://www.lihuipeng.com;

                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                        expires 30d;
                }

                location ~ .*\.(js|css)?$ {
                        expires 6h;
                }

                location ~ .*\.(log|txt)$
                {
                        deny all;
                }

                location ~ .*\.(php)?$
                {
                        fastcgi_pass  127.0.0.1:9000;
                        fastcgi_index index.php;
                        include fcgi.conf;
                }
        }

 

        server
        {
                listen       80;
                server_name www.lihuipeng007.com;
                index index.html index.php;
                root  /home/www/www.lihuipeng007.com;
                access_log  /home/logs/access_www.lihuipeng007.com.log;

                if (-d $request_filename){
                        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }

                error_page   500 502 503 504 404 403 http://www.lihuipeng007.com;

                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                        expires 30d;
                }

                location ~ .*\.(js|css)?$ {
                        expires 6h;
                }

                location ~ .*\.(log|txt)$
                {
                        deny all;
                }

                location ~ .*\.(php)?$
                {
                        fastcgi_pass  127.0.0.1:9000;
                        fastcgi_index index.php;
                        include fcgi.conf;
                }
        }

这样一个简单的nginx负载均衡就完成!

PS:Nginx负载的五种模式,也就是upstream的模式

1 轮询(默认) 
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自
动剔除。 
2 weight 
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream www.lihuipeng.com { 
server 192.168.93.138 weight=10; 
server 192.168.93.139 weight=10; 
}

3 ip_hash 
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以
解决session的问题。

upstream www.lihuipeng.com
ip_hash; 
server 192.168.93.138:80; 
server 192.168.93.139:80; 
}

4 fair(第三方) 
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5 url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务
器为缓存时比较有效。

upstream www.lihuipeng.com
server 192.168.93.138:80; 
server 192.168.93.139:80; 
hash $request_uri; 
hash_method crc32; 
}

用得比较多得应该是第3、5这两种吧!

后端的web文件同步有很多选择了,可以做nfs、rsync等!

本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/701509如需转载请自行联系原作者


lihuipeng

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
18天前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
108 59
|
7天前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
27 3
|
17天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
24天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
219 0
|
9天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
2天前
|
弹性计算 负载均衡 算法
slb 配置不当
【11月更文挑战第2天】
19 10
|
3天前
|
负载均衡 监控 应用服务中间件
slb配置同步问题
【11月更文挑战第1天】
13 3
|
4天前
|
应用服务中间件 网络安全 PHP
八个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
Nginx 是一个高效的 HTTP 服务器和反向代理,擅长处理静态资源、负载均衡和网关代理等任务。其配置主要通过 `nginx.conf` 文件完成,但复杂设置可能导致错误。本文介绍了几个开源的 Nginx 可视化配置系统,如 Nginx UI、VeryNginx、OpenPanel、Ajenti、Schenkd nginx-ui、EasyEngine、CapRover 和 NGINX Agent,帮助简化和安全地管理 Nginx 实例。
|
14天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
33 7
|
11天前
|
弹性计算 负载均衡 算法
slb配置监听器
【10月更文挑战第18天】
30 3
下一篇
无影云桌面