关于内网主备+https

先openssl证书

整体流程为:

1、页面访问为https,在电脑修改hosts文件,如域名为 babaozhou.com, 则配置为 ip1 babaozhou.com,ip2 babaozhou.com

也就是说同域名关联两个ip,这样如果服务器1ping不通了则可以自动切换到ip2,避免服务器连不上问题;

2、nginx -V,查看是否支持openssl

用keepalived+nginx;当主服务进程停掉后可以立马切换到备;

更改keepalived.conf,位置在/etc/keepalived/

当前主的配置

java 复制代码
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.254.136 83   //这里为需要切的ip 端口,其中254要与当前保持一致
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script chk_http_port {
 
  script "/usr/local/src/nginx_check.sh"		//脚本位置
  interval 2
  weight 2
}
 
vrrp_instance VI_1 {
    state MAXTER		//MAXTER  为主
    interface enp7s0f1		//interface要一致 ip -a 查看一下,要与当前服务器保持一直
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.254.100 83			//虚拟ip 端口,直接暴露出来的
    }
}

创建文件 nginx_check.sh,内容如下,放到 /usr/local/src/

java 复制代码
#!binbash
A=`ps -C nginx --no-header wc -l`
if [ $A -eq 0 ];then
    usrlocalnginxsbinnginx
    sleep 2
    if [ `ps -C nginx --no-header wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

java 复制代码
! Configuration File for keepalived
 
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.254.138 83		//备服务ip 端口
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script chk_http_port {
 
  script "/usr/local/src/nginx_check.sh"	//脚本位置,内容位置与上面一样
  interval 2
  weight 2
}
 
vrrp_instance VI_1 {
    state BACKUP		//BACKUP 为备
    interface enp11s0f0				//interface要一致 ip -a 查看一下,要与当前服务器保持一直	
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.254.100 83			//虚拟IP地址  端口
    }
}

nginx

java 复制代码
   server {
		listen       443 ssl;
        server_name  www.sky.com;

        ssl_certificate /root/CA/root/server.crt;
        ssl_certificate_key /root/CA/root/server.key;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		ssl_prefer_server_ciphers on;

			location / {
				proxy_pass http://192.168.254.100:83;  //该ip为keepalived虚拟ip
			}
    }
	//上面配置上一篇有讲
	//设置负载均衡 当86挂掉后自动切换到138; webname是随便起的
	upstream webname{
	   server 192.168.254.86:9124;
	   server 192.168.254.138:9124;
	}
    server {
        listen       83;
        server_name  _;
        location / {
				root    	/usr/local/src/dist;
				index 		index.html index.htm;
			}

        ssl_prefer_server_ciphers on;

			location ^~/api {

			rewrite ^/api/(.*)$ /$1 break; 
			proxy_pass http://webname;   //对于配置的webname
		}
    }

hosts解决服务器连不上切换到备,keepalived解决 keepalived与nginx进程停止后自动切换到备,nginx负载均衡解决 后端停止自动切换到备;还有别的七七八八再记录

相关推荐
今天AI了吗12 分钟前
MCP 协议打通 AI 与国产数据库,SQL 调优全流程一站式闭环
数据库·人工智能·sql
FungLeo19 分钟前
Flutter Web 中文字体困境与渲染器选择:CanvasKit vs HTML renderer 实战
前端·flutter·html
灯澜忆梦26 分钟前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
名字还没想好☜30 分钟前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
敲代码的玉米C41 分钟前
我修的那个 bug,制造了另一个 bug
前端·人工智能·架构
gis开发之家1 小时前
《Vue3 从入门到大神50篇》Vue3 源码详解(二十):生命周期钩子源码解析 —— onMounted / onUpdated 如何实现?
前端·javascript·前端框架·vue3·vue3源码
Narrastory1 小时前
我用 Claude Code 写代码不到 2 小时,却花了 3 天做完这个软件—Vibe Coding 的正确姿势,是设计不是生成
前端·人工智能·github
Enaium1 小时前
我实现了KMP的SDL绑定并编写了高性能软光追
前端·kotlin
古夕1 小时前
本地正常线上白屏:一次路由切换后刷新恢复问题的排查与修复
前端·ai编程
栀鸢ouo1 小时前
解决Element Plus表格展开行横向溢出、滚动截断问题(项目实战方案)
前端·vue.js