You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SSH堡垒机的Node.js API通过Nginx配置自签名证书问题排查

Nginx配置排查(自签名证书+SSH隧道场景)

核心语法错误修正

你的Nginx配置存在语法错误,server mysite.com;是无效指令,必须改为server_name mysite.com;,修正后的基础配置如下:

server{
    listen 443 ssl;  # 推荐将ssl与listen合并写法,替代单独的ssl on;
    server_name mysite.com;
    ssl_certificate /etc/ssl/server.crt;
    ssl_certificate_key /etc/ssl/server.key;
    location / {
       proxy_pass http://ip-x-x-x-x.ec2.internal:3000/;  # 注意此处目标地址修正
    }
}

分点排查项

1. Nginx配置有效性验证

  • 执行nginx -t检查配置语法,若报错需根据提示修正(如路径错误、语法问题)
  • 重启Nginx:systemctl restart nginx(Ubuntu/Debian)或service nginx restart,确保配置生效
  • 查看Nginx错误日志:tail -f /var/log/nginx/error.log,定位具体报错(如证书读取失败、反向代理连接超时)

2. 反向代理目标地址正确性

你的SSH隧道是本地8081映射到堡垒机→私有服务器3000,但Nginx部署在堡垒机上时,proxy_pass不能写localhost:3000(除非堡垒机本地另有转发隧道),必须直接指向私有服务器的内网地址:http://ip-x-x-x-x.ec2.internal:3000/

  • 在堡垒机上执行curl http://ip-x-x-x-x.ec2.internal:3000,验证是否能正常获取Node.js应用响应

3. SSL证书相关检查

  • 确认/etc/ssl/server.crt和/etc/ssl/server.key文件存在,且权限正确:
    chmod 600 /etc/ssl/server.key
    chown root:root /etc/ssl/server.crt /etc/ssl/server.key
    
  • 访问时必须使用https://mysite.com,而非HTTP(Nginx仅监听443端口)

4. 网络与DNS配置

  • 确认mysite.com已解析到EC2堡垒机的公网IP(可通过nslookup mysite.com验证)
  • 检查EC2安全组:允许入站443端口(TCP),否则外部请求会被拦截
  • 检查堡垒机防火墙(如ufw):是否开放443端口,执行ufw allow 443开放

5. 应用与隧道可用性

  • 在私有服务器上执行pm2 list,确认Node.js应用处于online状态;查看应用日志:pm2 logs
  • 确认堡垒机到私有服务器的内网连通性:在堡垒机ping私有服务器内网IP,或telnet 3000端口验证

内容的提问来源于stack exchange,提问作者switcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:20:47