June 2026探究前沿科技 · 提升自我文章 · Article
← 回到文章列表
前沿科技

Nginx + HTTPS:给 Python 和 Java 服务统一加入口

把 Python API 和 Java API 都藏在内网端口,由 Nginx 统一处理域名、证书、上传大小和代理头。

这篇文章发布于 2026.07.01,其中提到的工具、数据或结论请结合最新信息谨慎参考。

Nginx + HTTPS:给 Python 和 Java 服务统一加入口

无论后端是 Python 还是 Java,线上入口都不建议直接暴露应用端口。Nginx 负责门面,应用服务只监听 127.0.0.1。

一、端口规划

  • Python FastAPI: 127.0.0.1:8000
  • Java Spring Boot: 127.0.0.1:8080
  • Nginx: 对外 80 / 443

这样防火墙只需要开放 Web 端口。

二、申请证书

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d api.example.com

如果你有多个服务,可以分别配置不同子域名。

三、Python API 代理配置

server {
    listen 443 ssl http2;
    server_name api.example.com;

    client_max_body_size 50m;

    location / {
        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 $scheme;
    }
}

四、Java API 代理配置

server {
    listen 443 ssl http2;
    server_name java.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
}

五、上线检查清单

  • sudo nginx -t 必须通过
  • curl -I https://api.example.com 返回 200 或 404 都可以,不能连接失败
  • 应用日志不能出现数据库连接错误
  • 证书自动续期要确认
sudo certbot renew --dry-run
sudo systemctl reload nginx

六、常见问题

上传失败 413

说明 Nginx 限制太小,调大 client_max_body_size。

应用拿到的是 http 不是 https

确认代理头里有:

proxy_set_header X-Forwarded-Proto $scheme;

刷新前端 404

如果是前端 SPA,需要给静态站点加 `try_files $uri $uri/ /index.html;`。后端 API 站点不要这样配。

Nginx 是生产环境的第一层秩序:证书、域名、代理头、上传限制和日志都应该在这里明确下来。

本文链接https://elikbin.cn/article/nginx-https-python-java-gateway

版权声明:本文为 elik 原创,采用 CC BY-NC 4.0 协议授权。欢迎非商业转载,但请保留作者署名与原文链接;商业使用请先联系授权。

← 上一篇
好奇心的复利
下一篇 →
工具与心智
回到顶部 ~
© 2026 elik — 用好奇心写作 ✎