如何用 Nginx 反向代理在 US.KG 域名上部署动态应用本地绑定与代理配置【免费下载链接】US.KGFree domain registration and practical DNS learning resources for everyone.项目地址: https://gitcode.com/GitHub_Trending/us/US.KG假设你从 US.KGDigitalPlat FreeDomain注册了一个免费域名如example.foo.us.kg这类由平台分配的域名服务器上跑着一个动态应用由代码、数据库或用户输入生成响应现在要让公网流量通过 Nginx 反向代理到达这个应用而不是把应用端口直接暴露到公网。本文基于 Dynamic Applications and Reverse Proxies、Prepare a Linux Web Server 和 Deploy and Connect the Domain 给出完整操作路径本地绑定应用、配置 Nginx 代理、验证访问、排查 502。文档中的示例域名统一写作example.dpdns.org执行时请将其替换为你自己的域名示例端口为3000以你应用实际监听的端口为准。目标架构Browser | | HTTPS :443 v Nginx reverse proxy | | HTTP on 127.0.0.1:3000 v Application process | v Database or external services反向代理负责处理公网连接并把请求转发到绑定在本地接口上的应用进程。它能终结 TLS、按主机名或路径路由、限制请求大小与超时、高效提供静态文件、添加标准头部并把应用端口从公网网络中摘除。但要清楚反向代理不会自动让一个不安全的应用变得安全。准备条件按 Prepare a Linux Web Server服务器需要满足通用 Debian 或 Ubuntu 系发行版Nginx 作为示例 Web 服务器具备等价 HTTP、TLS、日志与虚拟主机能力的软件也可以拥有公网 IPv4 地址、IPv6 地址或两者通过具备sudo权限的非 root 账户管理服务器网络与主机防火墙放行入站 TCP 80 和 443域名已指向一台可用的权威 DNS 服务在外部权威 DNS 服务商处创建记录而不是在域名注册界面里创建。安装并确认 Nginx 服务sudo apt install nginx systemctl status nginx --no-pager sudo ss -lntpNginx 应监听 80 端口不要把无关的管理端口暴露到公网。第一步把应用绑定到本地接口当只有反向代理需要访问应用时优先使用127.0.0.1:3000而不是0.0.0.0:3000启动应用后确认真实监听者sudo ss -lntp这一步是判断本地绑定是否生效的依据如果看到应用监听在0.0.0.0:3000说明它仍然对外可达需要改回127.0.0.1再重新确认。第二步配置 Nginx 反向代理在站点配置的server块中加入下面的location段来自 3.7 章节location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; 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_connect_timeout 5s; proxy_read_timeout 30s; }proxy_pass指向应用实际监听的地址与端口。Host等四个头部让应用能拿到真实的主机名与客户端地址信息信任哪些代理头是应用侧的决策——要配置为只信任来自实际代理的头部否则客户端可能伪造 scheme 与地址信息。按 3.4 章节 的虚拟主机模式启用配置站点文件放在/etc/nginx/sites-available/你的域名然后软链到sites-enabled并测试、重载sudo ln -s /etc/nginx/sites-available/example.dpdns.org /etc/nginx/sites-enabled/example.dpdns.org sudo nginx -t sudo systemctl reload nginxnginx -t必须通过后才能 reload。如果应用使用数据库文档同时要求数据库绑定到私有接口除非确需远程访问、使用权限受限的专用数据库角色。第三步改 DNS 之前先测虚拟主机从能访问该服务器的机器上用Host头直接测试目标虚拟主机无需等待 DNS 生效示例中把192.0.2.10换成你的服务器公网 IPcurl -I -H Host: example.dpdns.org http://192.0.2.10这一步用于区分代理配置问题和DNS 问题如果带 Host 头的请求在服务器上就能通说明 Nginx 侧已就绪剩下的只是指向服务器。第四步创建 DNS 记录并验证在外部权威 DNS 服务中为域名创建记录替换为你的域名与服务器地址Name: Type: A Value: your-server-ipv4IPv6 仅在服务器可通过公网 IPv6 到达时才添加Name: Type: AAAA Value: your-server-ipv6如果还用了www子域名Name: www Type: CNAME Value: example.dpdns.org然后验证解析结果答案必须与实际可用的服务器地址一致同时发布了 IPv4 和 IPv6 时分别测试dig A example.dpdns.org dig AAAA example.dpdns.org dig CNAME www.example.dpdns.org最后验证 HTTPcurl -I http://example.dpdns.org curl -I http://www.example.dpdns.org两个名字都应到达目标服务器。如果 DNS 查询成功但 HTTP 超时通常指向服务器、防火墙或路由问题而不是解析问题。遇到 502 时按什么顺序排查动态应用上线后最常见的失败信号是502。3.7 章节 给出的排查顺序确认应用进程在运行。确认期望的本地端口在监听sudo ss -lntp。在服务器上直接请求应用。检查反向代理错误日志。检查应用日志。核对proxy_pass中的协议、地址与端口。检查本地防火墙或安全策略。文档给出的示例命令curl -I http://127.0.0.1:3000/healthz sudo tail -n 100 /var/log/nginx/example.dpdns.org.error.log其中/healthz是文档示例中的健康检查端点GET /healthz - 200 OK如果你的应用没有这个端点用应用实际暴露的轻量端点替代。应用进程的管理要求文档明确不要拿开发服务器当永久生产进程除非其文档明确支持生产运行。生产应用需要非 root 服务账户定义好的工作目录环境或密钥加载带限制条件的自动重启结构化日志健康检查优雅停机部署与回滚流程。配置要分两类管理公开配置端口、功能开关、公网 URL与敏感配置数据库密码、签名密钥、API token。前端 bundle 是公开的嵌进浏览器 JavaScript 的密钥就不再是密钥。后续配置 HTTPS本地绑定与代理就绪、HTTP 验证通过后按 Enable and Verify HTTPS 用 ACME 客户端申请证书Nginx 集成的客户端通常一次为两个名字申请随后配置 HTTP 到 HTTPS 的 308 跳转并用curl -I与openssl s_client验证证书覆盖了所有对外的 HTTPS 主机名、自动续期可用。另外如果后续要回滚本次部署参考 Deploy and Connect the Domain 的处理恢复旧的 DNS 值或服务器文件让旧服务在缓存的 DNS 答案过期前继续运行并在重试前记录失败证据。【免费下载链接】US.KGFree domain registration and practical DNS learning resources for everyone.项目地址: https://gitcode.com/GitHub_Trending/us/US.KG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考