记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

宝塔面板使用nginx实现负载均衡。


使用以下配置文件内容,就可以不用购买宝塔面板中的商业软件了。


环境:

  1,域名: www.9999.com

   2,,前端nginx作https负载均衡。

    3,后台两个realserver网站配置http。


/www/server/panel/vhost/nginx 目录下创建两个相关文件。

第一个配置文件,upstream_9999.conf


[centos7]#cat upstream_9999.conf


upstream 999 {
    ip_hash;
    server 172.16.32.15:80 max_fails=2 fail_timeout=10s weight=1;
    server 172.16.32.4:80 max_fails=2 fail_timeout=10s weight=1;


    #sticky name=bt_route expires=12h httponly;
}




第一个配置文件,www.999.conf :
[centos7]#cat www.999.conf


server
{
    listen 80;
listen 443 ssl http2;
    server_name www.999.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/www.999.com;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /www/server/panel/vhost/cert/www.999.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/www.999.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;


    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    
#引用反向代理规则,注释后配置的反向代理将无效
include /www/server/panel/vhost/nginx/proxy/www.999.com/*.conf;


include enable-php-00.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/www.999.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    
    access_log  /www/wwwlogs/www.999.com.log;
    error_log  /www/wwwlogs/www.999.com.error.log;
}






第三个配置文件 
/www/server/panel/vhost/nginx/proxy/www.999.com 目录下创建相关文件。


[centos7]#cat  load_balance.conf



#PROXY-START


location / {
    proxy_pass http://999;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}


set $site_name www.999.com;
include /www/server/panel/vhost/nginx/load_total.lua;
#PROXY-END





宝塔面板使用nginx实现TCP端口的负载均衡。

这里以,前端nginx 监听443端口,后台realserver,配置https网站为例。

当然也可以是其它端口。

/www/server/panel/vhost/nginx/tcp 目录下创建相关配置文件文件。



upstream tcp_443 {
server 172.16.32.15:443 weight=1 max_fails=2 fail_timeout=10;
server 172.16.32.4:443 weight=1 max_fails=2 fail_timeout=10;
}


server {
    listen 0.0.0.0:443;
    proxy_connect_timeout 8s;
    proxy_timeout 86400s;
    proxy_pass tcp_443;
    access_log /www/wwwlogs/load_balancing/tcp/443.log tcp_format;

}



如果怕上面的配置太麻烦,可以使用下面最简单的方式,实现nginx负载均衡后端web服务器。

1,先到宝塔面板上面创建一个站点。如下图,域名 web01.demo 



2,修改站点配置文件,添加以下的内容,其它内容可以不变。

upstream server_pools { # 业务服务器池
        server 192.168.137.32:8343 max_fails=2 fail_timeout=3s weight=1;
        server 192.168.137.32:8344 max_fails=2 fail_timeout=3s weight=1;
# 假设 8343和8344的两个IP端口为业务的两个集群节点
}


server
{
    listen 80;
    server_name web01.demo;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/web01.demo;
    location / {
    proxy_pass http://server_pools;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    }


具体如下图:



如此即可实现通过nginx负载均衡后端的多台Web服务器。



转载请标明出处【宝塔面板使用nginx实现负载均衡与TCP端口代理。】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论