news 2026/10/24 5:31:36

Nginx + Keepalived 高可用以及Nginx HTTPS 部署---企业场景实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx + Keepalived 高可用以及Nginx HTTPS 部署---企业场景实战

企业生产环境

场景一:Nginx HTTPS 部署

需求:网站启用 HTTPS 加密访问。

要求:

1)手动签发 SSL 证书

1. 准备工作:安装 Nginx

如果你还没有安装 Nginx,请按照以下步骤安装 Nginx:

①安装 EPEL 仓库

yum install epel-release -y

② 安装 Nginx

yum install nginx -y (我是源代码编译安装,以下步骤都参考编译安装的nginx)

③启动并设置 Nginx 开机启动

systemctl start nginx

systemctl enable nginx

④检查 Nginx 是否正常运行

访问 http://your_server_ip,你应该能看到 Nginx 的默认欢迎页面。如果没有,使用以

下命令检查 Nginx 状态:systemctl status nginx

2. 获取 SSL/TLS 证书

SSL/TLS 证书是启用 HTTPS 加密连接所必需的。我们可以使用免费的 Let's Encrypt 证

书,也可以选择使用 自签名证书。

① 扩展使用 Let's Encrypt 免费证书(推荐)

Let's Encrypt 提供免费的 SSL/TLS 证书,且能够自动续期。我们将使用 Certbot 工具来自

动获取并配置证书。

②安装 Certbot

首先,安装 Certbot 和 Nginx 插件。

yum install epel-release -y

yum install certbot python2-certbot-nginx -y

2)配置 Nginx 支持 HTTPS

1.手动生成自签名证书(推荐你当前环境用)
①快速生成测试

如果你只是想在虚拟机里跑通HTTPS配置流程,不追求浏览器信任,直接用Linux自带的openss1生成证书,一分钟搞定,完全不依赖外网:

mkdir -p /usr/local/nginx/conf/ssl

cd /usr/local/nginx/conf/ssl

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout nginx.key -out nginx.crt -subj "/CN=test.local"

②在nginx.conf 里配置

server {

listen 443 ssl;

server_name localhost;

ssl_certificate /usr/local/nginx/conf/ssl/nginx.crt;

ssl_certificate_key /usr/local/nginx/conf/ssl/nginx.key;

location /{

root html;

index index.html index.htm;

}

}

3)使用https://域名 成功访问网站

重启Nginx后,浏览器访问https://你的虚拟机IP,点击“高级继续前往”就能看到页面。这才是你当前虚拟机环境下最快能”手动签发”并验证SSL配置的方式。

场景二:Nginx + Keepalived 高可用

需求: Web 服务实现高可用,主节点故障自动切换。

环境规划:Nginx × 2(Master / Backup)

提交:

1、配置文件

2、实验步骤

3、HTTPS 访问截图

4、故障切换截图(切换前、切换后)

要求:

1) 完成 Nginx + Keepalived 部署

1.安装 Nginx 并做好区分标记
①安装 Nginx(两台都装)

# 有网环境

yum -y install epel-release

yum -y install nginx

# 启动并设置开机自启

systemctl start nginx

systemctl enable nginx

# 验证

curl -I http://127.0.0.1

② 做一个能区分主备的首页(关键!小白一定要做)

# 在 dr1(主)上执行

echo "<h1>I am MASTER --- 192.168.10.80</h1>" > /usr/local/nginx/html/index.html

# 在 dr2(备)上执行

echo "<h1>I am BACKUP --- 192.168.10.23</h1>" > /usr/local/nginx/html/index.html

③ 各自验证

curl http://192.168.10.80 # 应输出 I am MASTER

curl http://192.168.10.23 # 应输出 I am BACKUP

2.安装配置 Keepalived(默认抢占模式)
① 安装 Keepalived(两台都装)

yum -y install keepalived

systemctl enable keepalived

② 先备份原配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

③ 主服务器 dr1(10.8.0.19)配置

vim /etc/keepalived/keepalived.conf

清空原有内容,写入:

global_defs {

router_id dr1 # 标识本机,两台不能一样

}

vrrp_instance VI_1 {

state MASTER # 角色:主

interface ens33 # 绑定的网卡(写物理网卡名,不要写

ens33:0)

virtual_router_id 51 # 虚拟路由ID,两台必须一致!

priority 100 # 优先级,主 > 备

advert_int 1 # 心跳间隔 1 秒

authentication {

auth_type PASS

auth_pass 1111 # 密码,两台必须一致

}

virtual_ipaddress {

192.168.10.180 # 虚拟 IP(VIP)

}

}

④ 备服务器 dr2(10.8.0.20)配置

global_defs {

router_id dr2 # 注意:和主不同

}

vrrp_instance VI_1 {

state BACKUP # 角色:备

interface ens33

virtual_router_id 51 # 和主一致

priority 90 # 比主小

advert_int 1

authentication {

auth_type PASS

auth_pass 1111 # 和主一致

}

virtual_ipaddress {

192.168.10.180

}

}

⑤ 启动服务

systemctl start keepalived

systemctl status keepalived

⑥ 验证 VIP 落在谁身上

# 在 dr1 上执行

ip addr show ens33

应当看到 inet 192.168.10.180/32 scope global secondary ens33 —— VIP 在主上。

# 在 dr2 上执行

ip addr show ens33 #ens160

备机上看不到 192.168.10.180。

⑦ 从客户端验证服务

curl http://192.168.10.180

# 应输出:I am MASTER --- 192.168.10.80 (VIP 指向了主)

2) 演示主节点故障切换(VIP 自动漂移)

故障切换测试(Failover)

①模拟主服务器故障(注意:不要直接关机,用停服务的方式更直观)

# 在 dr1(主)上执行:停掉 keepalived,模拟故障

systemctl stop keepalived

②立刻到备机 dr2 上观察:

ip addr show ens33 # ens160

# 应看到 VIP 192.168.10.180 已经出现在备机上

③再从客户端访问:

curl http://192.168.10.180

# 输出变成:I am BACKUP --- 10.8.0.20

④恢复主服务器

# 在 dr1(主)上执行

systemctl start keepalived

⑤再查 VIP

# dr1 上

ip addr show ens33 # VIP 又回到主上了(因为默认是"抢占"模式)

# dr2 上

ip addr show ens33 #ens160 # 备机上的 VIP 消失

3) 验证业务访问不中断

①公网网关必须一样(注意)

把上面的/etc/keepalived/keepalived.conf配置改成:10.8.0.100(两台机器都需要改)

②用客户端执行 while true; do curl http://10.8.0.100; sleep 1; done

③依次操作

关闭dir1

systemctl stop keepalived

开启dir2

在开启dir1

④结果

关闭dir1,VIP到dir2,在开启dir1,VIP再一次回到主机

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 5:30:35

LLM-Enhanced Q-Learning for CVRPTW with Real-Time Urgency Constraints (arXiv:2505.06178)

### 文章主要内容本文针对带时间窗的车辆路径问题(CVRPTW),提出了一种结合大语言模型(LLM)和Q学习的增强框架,旨在解决具有实时紧急约束的CVRPTW问题。通过将LLM的语义推理能力与强化学习的迭代优化能力相结合,框架分为**LLM引导探索阶段**和**Q网络自主优化阶段**,并设…

作者头像 李华
网站建设 2026/10/24 5:29:01

【C++11】初识——右值引用和移动语义,可变参数模板

&#x1f308;个人主页&#xff1a;ꪔ小林Y ✨个人专栏&#xff1a;《C》&#xff0c;《C语言》&#xff0c;《数据结构入门——从原理到实战》,《拾光Linux》&#xff0c;《网络安全》 &#x1f340;代码信条&#xff1a;每一行代码都是成长的脚印&#x1f463;&#xff0c;每…

作者头像 李华
网站建设 2026/10/24 5:27:36

Python aiida-inq 包详解与实战案例

1. 引言aiida-inq 是一个基于 AiiDA 工作流框架的 Python 包&#xff0c;专门用于高通量第一性原理计算与材料性质分析。它把密度泛函理论计算、数据管理和结果后处理封装成可复用的工作流&#xff0c;帮助科研人员以声明式方式组织计算任务&#xff0c;并自动记录计算 provena…

作者头像 李华
网站建设 2026/10/24 5:25:33

webgis 技能要求

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华