README
🚀 使用Nginx在EC2实例上配置HTTPS反向代理服务器
本项目详细介绍了如何在亚马逊弹性计算云(Amazon EC2)实例上,使用Nginx配置一个基于HTTPS的安全反向代理服务器。通过这种方式,前端客户能够通过安全的HTTPS协议访问后端服务,提升数据传输的安全性。
🚀 快速开始
以下是配置HTTPS反向代理服务器的整体步骤:
- 安装Nginx
- 获取EC2实例的公共主机名
- 创建Nginx配置文件
- 启动Nginx服务
- 通过HTTPS访问反向代理服务器
✨ 主要特性
- 安全性:通过HTTPS协议保障数据传输安全。
- 反向代理:将前端请求转发到后端服务。
📦 安装指南
安装Nginx
- 打开终端,运行以下命令安装Nginx:
sudo apt-get install nginx - 验证Nginx是否正确安装:
sudo nginx -t - 重新加载Nginx配置以应用更改:
sudo systemctl reload nginx
获取EC2实例的公共主机名
使用curl命令获取实例的公开DNS名称:
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") && curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/public-hostname
💻 使用示例
创建Nginx配置文件
基础用法
- 打开终端,运行以下命令创建新的Nginx配置文件:
sudo nano /etc/nginx/conf.d/ec2.conf - 将以下内容粘贴到文件中(记得替换占位符):
server { listen 80; server_name YOUR_EC2_HOSTNAME; # 重定向HTTP到HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name YOUR_EC2_HOSTNAME; # SSL证书和密钥路径 ssl_certificate /etc/ssl/certs/cert.pem; ssl_certificate_key /etc/ssl/privatekey/privkey.pem; # 设置SSL协议和加密套件 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { # 反向代理到本地服务(例如,端口8000) proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } - 保存并退出编辑器。
启动Nginx服务
基础用法
- 测试Nginx配置是否正确:
sudo nginx -t - 如果配置无误,重新加载Nginx以应用更改:
sudo systemctl reload nginx - 确保Nginx服务正在运行:
sudo systemctl status nginx
通过HTTPS访问反向代理服务器
基础用法
- 更新所有MCP客户端的配置,使用新的HTTPS URL。
- 使用mcp_sse_client.py连接反向代理服务器:
python mcp_sse_client.py --url https://YOUR_EC2_HOSTNAME:443 - 使用LangGraph Agent连接反向代理服务器:
export MCP_SERVER_URL=https://YOUR_EC2_HOSTNAME:443
📚 详细文档
安装Nginx
- 打开终端,运行安装命令
sudo apt-get install nginx,该命令会从软件源下载并安装Nginx。 - 运行
sudo nginx -t验证Nginx配置是否正确,若输出显示配置无误,则可进行下一步。 - 运行
sudo systemctl reload nginx重新加载Nginx配置,使更改生效。
获取EC2实例的公共主机名
使用curl命令获取实例的公开DNS名称,该名称用于后续配置中的server_name。
创建Nginx配置文件
- 运行
sudo nano /etc/nginx/conf.d/ec2.conf创建新的Nginx配置文件。 - 在文件中配置SSL证书路径、密钥路径、SSL协议和加密套件,以及反向代理规则。
- 保存并退出编辑器。
启动Nginx服务
- 运行
sudo nginx -t测试Nginx配置是否正确。 - 若配置无误,运行
sudo systemctl reload nginx重新加载Nginx以应用更改。 - 运行
sudo systemctl status nginx确保Nginx服务正在运行。
通过HTTPS访问反向代理服务器
- 更新所有MCP客户端的配置,使用新的HTTPS URL。
- 使用
mcp_sse_client.py连接反向代理服务器,指定--url参数为新的HTTPS URL。 - 使用LangGraph Agent连接反向代理服务器,通过
export MCP_SERVER_URL设置服务器URL。
🔧 技术细节
本项目使用Nginx作为反向代理服务器,通过配置SSL证书和密钥,实现HTTPS协议的安全传输。Nginx的反向代理功能将前端请求转发到本地8000端口的服务,从而实现前后端的分离。同时,通过定期更新SSL证书和监控Nginx服务状态,保障系统的安全性和稳定性。
📄 注意事项
⚠️ 重要提示
- 确保SSL证书和密钥路径正确无误,否则会导致HTTPS连接失败。
- 定期更新SSL证书以保障安全性,避免证书过期影响服务。
- 监控Nginx服务状态,确保其正常运行,可通过
sudo systemctl status nginx查看服务状态。
通过以上步骤,您可以在EC2实例上成功配置一个安全的HTTPS反向代理服务器。
Scan to contact