Nginx配置Certbot SSL证书后,8000端口HTTPS访问报400错误求助
问题分析与解决
你遇到的400 Bad Request The plain HTTP request was sent to HTTPS port错误,核心原因是端口冲突——你让Nginx监听了8000端口(listen 8000 ssl;),但你的NodeJS服务也在8000端口运行,两个进程抢占同一端口,最终导致请求转发异常。
具体修改步骤:
修改NodeJS服务的监听端口
把你的NodeJS服务改成监听其他未被占用的端口(比如8001),具体修改取决于服务代码(例如Express框架里的app.listen(8001)),修改后用pm2重启服务:pm2 restart <你的服务名称>调整Nginx配置的转发目标
找到第三个server块,将proxy_pass的目标端口改为NodeJS服务新的端口:location / { proxy_pass http://localhost:8001; # 此处改为NodeJS新端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }重载Nginx配置生效
执行命令让Nginx加载新配置:sudo nginx -s reload
额外验证:
可以用以下命令确认8000端口已被Nginx占用,NodeJS服务在新端口正常运行:
netstat -tulpn | grep -E "8000|8001"
内容的提问来源于stack exchange,提问作者johnny shepherd
相关产品推荐
相关产品推荐

