AIGlasses_for_navigation镜像免配置:Nginx反向代理+HTTPS证书自动配置脚本

张开发
2026/6/1 18:23:12 15 分钟阅读
AIGlasses_for_navigation镜像免配置:Nginx反向代理+HTTPS证书自动配置脚本
AIGlasses_for_navigation镜像免配置Nginx反向代理HTTPS证书自动配置脚本你是不是也遇到过这种烦恼好不容易在服务器上部署了一个像AIGlasses_for_navigation这样的智能应用功能都跑通了但想从外网访问时却卡在了配置上。要么是端口暴露不安全要么是浏览器总提示“不安全连接”还得手动申请和配置SSL证书一套流程下来半天时间就没了。今天我就来分享一个“懒人”解决方案——一个集成了Nginx反向代理和HTTPS证书自动配置的脚本。它能让你在几分钟内为你的AIGlasses_for_navigation服务或其他Web服务穿上安全、专业的外衣实现免配置、一键开启HTTPS访问。1. 为什么需要这个脚本在深入脚本细节之前我们先搞清楚它到底解决了什么问题。AIGlasses_for_navigation本身是一个功能强大的智能导航辅助系统默认运行在服务器的8081端口。直接通过http://你的IP:8081访问存在几个明显的痛点端口暴露直接暴露应用端口如8081存在安全风险容易被扫描攻击。连接不安全HTTP协议传输的数据是明文的对于涉及语音指令、导航数据等敏感信息的应用来说这是不可接受的。现代浏览器也会对HTTP站点标记为“不安全”。配置繁琐手动配置Nginx反向代理、申请Let‘s Encrypt证书、配置证书自动续期步骤多容易出错对新手不友好。无法使用域名直接IP端口访问不便于记忆和分享也不够专业。这个脚本的核心价值就是自动化。它把上述所有繁琐的步骤打包成一个命令你只需要提供域名和邮箱剩下的交给它。最终你可以通过https://你的域名安全、优雅地访问你的AIGlasses_for_navigation服务。2. 脚本核心功能与原理这个脚本主要做了三件大事我们用人话拆解一下2.1 自动安装与配置NginxNginx在这里扮演“前台接待”和“保安”的角色。接待反向代理外部用户访问https://your-domain.com请求首先到达Nginx。Nginx一看“哦这是找AIGlasses服务的”于是它把请求转发给内部在localhost:8081运行的AIGlasses应用拿到结果后再返回给用户。用户完全感知不到背后的8081端口。保安HTTPS卸载Nginx负责与用户进行安全的HTTPS通信解密请求加密响应而它与后端AIGlasses服务之间通常使用快速的HTTP通信。这既保证了前端安全又减轻了后端应用处理加密的计算压力。脚本会自动安装Nginx并生成一个针对你域名的配置文件。2.2 自动申请与配置SSL证书使用CertbotSSL证书就是网站的“身份证”用来证明“https://your-domain.com”这个地址确实是你的并启用加密。Let‘s Encrypt是一个免费、自动化的证书颁发机构。申请脚本通过Certbot工具向Let‘s Encrypt证明你拥有这个域名通常通过在服务器上创建一个临时文件来验证。配置证书申请成功后包含.crt公钥文件和.key私钥文件脚本会自动修改Nginx配置告诉Nginx去哪里找到这些证书文件并启用HTTPS。续期Let‘s Encrypt的证书只有90天有效期。脚本会配置一个自动续期的定时任务cron job在证书快过期时自动更新完全无需人工干预实现“一次配置永久有效”。2.3 配置系统防火墙可选但推荐为了安全服务器默认可能只开放少数端口如SSH的22端口。脚本可以帮你自动配置防火墙如UFW开放HTTP(80)和HTTPS(443)端口同时确保你的AIGlasses应用端口8081不被外部直接访问。3. 一键部署脚本详解下面是脚本的核心内容。你可以将它保存为一个文件例如setup_https_proxy.sh。#!/bin/bash # AIGlasses_for_navigation HTTPS反向代理自动配置脚本 # 作者你的名字 # 功能自动配置Nginx反向代理与Let‘s Encrypt SSL证书 set -e # 遇到错误立即退出 echo echo AIGlasses_for_navigation HTTPS代理配置脚本 echo # 检查是否为root用户 if [[ $EUID -ne 0 ]]; then echo 错误此脚本必须以root权限运行。请使用 sudo 执行。 exit 1 fi # 用户输入 read -p 请输入您的域名 (例如: aiglasses.yourdomain.com): DOMAIN_NAME read -p 请输入您的邮箱 (用于证书到期提醒): EMAIL_ADDRESS # 验证输入 if [[ -z $DOMAIN_NAME || -z $EMAIL_ADDRESS ]]; then echo 错误域名和邮箱不能为空。 exit 1 fi echo echo 配置信息确认 echo 域名: $DOMAIN_NAME echo 邮箱: $EMAIL_ADDRESS echo 后端服务: localhost:8081 (AIGlasses_for_navigation) echo read -p 是否继续(y/n): -n 1 -r echo if [[ ! $REPLY ~ ^[Yy]$ ]]; then echo 操作已取消。 exit 0 fi echo 步骤 1/5: 更新系统包列表... apt-get update -qq echo 步骤 2/5: 安装Nginx... apt-get install -y -qq nginx echo 步骤 3/5: 配置Nginx反向代理... # 创建Nginx站点配置文件 CONFIG_FILE/etc/nginx/sites-available/aiglasses_$DOMAIN_NAME cat $CONFIG_FILE EOF server { listen 80; listen [::]:80; server_name $DOMAIN_NAME; # 用于Certbot域名验证的根目录 location /.well-known/acme-challenge/ { root /var/www/html; } # 将所有HTTP流量重定向到HTTPS配置证书后启用 # location / { # return 301 https://\$server_name\$request_uri; # } # 临时反向代理到AIGlasses服务申请证书期间保持HTTP可访问 location / { proxy_pass http://localhost:8081; proxy_http_version 1.1; proxy_set_header Upgrade \$http_upgrade; proxy_set_header Connection upgrade; 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 \$scheme; proxy_cache_bypass \$http_upgrade; # 增加超时设置适应长连接如WebSocket proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } } EOF # 创建符号链接启用站点 ln -sf $CONFIG_FILE /etc/nginx/sites-enabled/ # 测试Nginx配置 nginx -t # 重载Nginx配置 systemctl reload nginx echo 步骤 4/5: 安装Certbot并申请SSL证书... # 安装Certbot和Nginx插件 apt-get install -y -qq certbot python3-certbot-nginx # 申请并自动配置证书 if certbot --nginx --non-interactive --agree-tos --email $EMAIL_ADDRESS -d $DOMAIN_NAME --redirect; then echo SSL证书申请并配置成功 else echo 证书申请可能失败请检查 echo 1. 域名DNS解析是否已指向本服务器IP。 echo 2. 服务器80/443端口是否已在防火墙开放。 echo 正在回退到HTTP配置... # 注释掉重定向确保HTTP至少可用 sed -i s/return 301/# return 301/ $CONFIG_FILE systemctl reload nginx echo 已回退至HTTP配置您可以通过 http://$DOMAIN_NAME 访问服务。 exit 1 fi echo 步骤 5/5: 配置防火墙UFW... # 检查UFW是否安装 if command -v ufw /dev/null; then echo 配置UFW防火墙规则... ufw allow Nginx Full # 允许80和443 ufw --force enable echo 防火墙已配置开放HTTP(80)和HTTPS(443)端口。 else echo UFW未安装跳过防火墙配置。建议您手动配置防火墙规则。 fi echo echo echo 配置完成 echo echo echo 请通过以下地址访问您的AIGlasses_for_navigation服务 echo HTTPS: https://$DOMAIN_NAME echo echo 重要提示 echo 1. 请确保域名 $DOMAIN_NAME 的DNS A记录已指向本服务器IP。 echo 2. 证书将自动续期无需手动操作。 echo 3. 如果遇到连接问题请检查AIGlasses_for_navigation服务是否正在运行 echo sudo supervisorctl status aiglasses echo echo 您现在可以安全地使用智能导航辅助系统了4. 如何使用这个脚本使用过程非常简单只需要几步准备工作确保你的AIGlasses_for_navigation服务已经在服务器上正常运行http://localhost:8081可以访问。确保你拥有一个域名并且该域名的DNS解析A记录已经指向了你服务器的公网IP地址。下载并运行脚本# 将脚本保存到服务器 nano setup_https_proxy.sh # 粘贴上面的脚本内容按CtrlX然后按Y再按Enter保存 # 赋予脚本执行权限 chmod x setup_https_proxy.sh # 以root权限运行脚本 sudo ./setup_https_proxy.sh根据提示输入信息请输入您的域名输入你解析到本服务器的域名例如aiglasses.yourcompany.com。请输入您的邮箱输入你的邮箱用于接收证书到期提醒非必须但建议填写。等待脚本自动执行。脚本会依次完成安装、配置、申请证书等所有步骤。如果一切顺利最后会输出成功的提示和你的HTTPS访问地址。验证打开浏览器访问https://你的域名。你应该能看到AIGlasses_for_navigation的Web界面并且浏览器地址栏会显示安全的锁标志。5. 脚本做了什么——效果展示运行脚本后你的服务器架构会发生如下变化┌─────────────────────────────────────┐ │ 互联网用户 │ │ 访问 https://your-domain.com │ └───────────────┬─────────────────────┘ │ (HTTPS 443端口) ▼ ┌─────────────────────────────────────┐ │ Nginx (反向代理) │ │ 1. 终止SSL连接 │ │ 2. 将请求转发给后端应用 │ └───────────────┬─────────────────────┘ │ (HTTP, localhost:8081) ▼ ┌─────────────────────────────────────┐ │ AIGlasses_for_navigation 应用 │ │ (运行在 localhost:8081) │ └─────────────────────────────────────┘访问对比配置前http://203.0.113.10:8081不安全不易记配置后https://aiglasses.yourdomain.com安全专业易记所有语音交互、导航数据在传输过程中都会被加密有效防止窃听和篡改。6. 常见问题与排查即使自动化脚本能解决大部分问题偶尔也可能遇到一些小麻烦。这里列出几个常见情况脚本运行失败提示“域名验证失败”原因这是最常见的问题。Certbot需要验证你拥有这个域名验证方法是访问http://你的域名/.well-known/acme-challenge/xxx。解决请务必等待DNS解析生效通常需要几分钟到几小时。你可以通过ping 你的域名或在其他电脑上nslookup 你的域名来检查解析是否正确指向了服务器IP。访问HTTPS网址显示Nginx默认页面或502错误原因1AIGlasses_for_navigation服务没有运行。解决运行sudo supervisorctl status aiglasses检查并启动服务。原因2Nginx配置未正确指向后端。解决检查/etc/nginx/sites-enabled/下的配置文件确认proxy_pass指向的是http://localhost:8081;。证书到期后没有自动续期原因Certbot的自动续期定时任务可能被误删或未正确安装。解决可以手动测试续期sudo certbot renew --dry-run。如果需要手动续期sudo certbot renew。想为多个服务或子路径配置代理本脚本是基础版。你可以手动编辑Nginx配置文件/etc/nginx/sites-available/aiglasses_yourdomain实现更复杂的路由。例如将/api/路径代理到另一个后端服务或者设置静态文件缓存等。7. 总结通过这个自动化脚本我们成功地将部署AIGlasses_for_navigation这类智能应用的最后一道门槛——安全的外网访问——给踏平了。它不仅仅是节省了时间更重要的是提供了一种标准、安全、可维护的部署方式。核心价值回顾安全升级从HTTP明文传输升级到HTTPS加密传输保护用户数据。访问简化用易记的域名替代复杂的IP端口提升用户体验和专业度。维护省心全自动的证书申请与续期彻底告别手动操作的繁琐和遗忘风险。架构清晰通过Nginx反向代理实现了访问控制、负载均衡未来扩展和安全防护的分离。下次当你部署任何一个需要对外提供Web服务的应用时都可以考虑复用或修改这个脚本。它就像给你的服务套上了一件即穿即用的“安全外衣”让你能更专注于应用功能本身而非底层运维细节。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章