我正在尝试使用Nginx为我的Ubuntu服务器设置Https。我在 localhost 上运行一个应用程序并使用反向代理。这是我第一次使用 Linux 和 nginx。我的 https 请求每次都失败。我将尝试从服务器中包含尽可能多的相关详细信息:
我已经为我的网站分配了一个域名,并使用 certbot 配置了 ssl 证书。
当我使用http发出请求时,它成功了: curl 请求到 http 端口
但是https请求总是失败: curl请求https端口
端口 443 和 80 均处于活动状态且正在监听: 活动端口
为了简化调试,我现在已经将 nginx 配置为将 http 请求(端口 80)重定向到 https(端口 443)。这意味着现在对我的 http 发出的请求也会失败。这是我网站的配置文件: nginx conf 文件
以下是我发出 https 请求后 nginx 调试日志的片段:
2024/12/28 18:27:40 [debug] 21424#21424: *207 http script copy: "https://"
2024/12/28 18:27:40 [debug] 21424#21424: *207 http script var: "chatbot.sweatsupport.site"
2024/12/28 18:27:40 [debug] 21424#21424: *207 http script var: "/ws/socket.io/?EIO=4&transport=polling&t=PGEXYJx"
2024/12/28 18:27:40 [debug] 21424#21424: *207 http finalize request: 301, "/ws/socket.io/?EIO=4&transport=polling&t=PGEXYJx" a:1, c:1
2024/12/28 18:27:40 [debug] 21424#21424: *207 http special response: 301, "/ws/socket.io/?EIO=4&transport=polling&t=PGEXYJx"
2024/12/28 18:27:40 [debug] 21424#21424: *207 http set discard body
2024/12/28 18:27:40 [debug] 21424#21424: *207 HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0 (Ubuntu)
Date: Sat, 28 Dec 2024 18:27:40 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://chatbot.sweatsupport.site/ws/socket.io/?EIO=4&transport=polling&t=PGEXYJx
我从日志中了解到,做出了 301 http 响应。似乎没有上游日志显示对 localhost:8000 的任何请求。我确实试图理解日志,但这会导致更多混乱,所以我不会提及这一点。
我已经因为这个错误而苦恼了 3 天,浏览了尽可能多的论坛,但毫无进展。如果您需要更多信息,请告诉我。如果您有任何建议,我将不胜感激。
将 80 重定向到 443 并不是一个好办法。我建议放弃你的设置并从头开始,而不是让自己陷入困境。
尝试按照良好的说明一步一步地开始,并注意是否跳过了任何内容。
这是基本的建议,但是相信我,如果你错过了一两步,重新开始可以节省几个小时。
事实证明,问题根本不是 Nginx 配置,而是我的 AWS LightSail 服务器防火墙。有趣的是,CLI 显示服务器防火墙已关闭,但防火墙必须通过 AWS 网站上的 GUI 进行配置。我通过服务器设置中的“网络”选项卡将 HTTPS 端口 (443) 添加到防火墙来修复它
(单击服务器->网络选项卡->IPv4 防火墙->添加规则->输入端口 443)