宝塔面板使用nginx实现负载均衡与TCP端口代理

举报
江晚正愁余 发表于 2024/04/03 11:06:11 2024/04/03
【摘要】  宝塔面板使用nginx实现负载均衡与TCP端口代理使用以下配置文件内容,就可以不用购买宝塔面板中的商业软件了。环境:  1,域名: www.9999.com   2,,前端nginx作https负载均衡。    3,后台两个realserver网站配置http。宝塔面板使用nginx实现负载均衡/www/server/panel/vhost/nginx 目录下创建两个相关文件。第一个配置文...

 宝塔面板使用nginx实现负载均衡与TCP端口代理

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


环境:

  1,域名: www.9999.com

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

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

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


/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 

111111111.png



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;
    }


具体如下图:


2222222222222.png


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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。