如果未打开 80 端口,浏览器就无法连接到我的服务器

如果未打开 80 端口,浏览器就无法连接到我的服务器

我有一台服务器,其中 NGINX 作为反向代理运行。当我在路由器上保持端口 80 和 443 开放时,我的配置工作正常。当我只保留 443 时,我收到“连接超时”错误。这种情况发生在 Chrome、Firefox 和 Safari 上,所以我相信它与浏览器配置无关。

这是我的反向代理配置(如您所见,非常简单):

events {}

http {
    server {
        listen 443;
        listen 80;
        
        server_name jellyfin.server.com;
        
        location / {
            proxy_pass http://192.168.1.200:8096;
        }
    }
}

什么地方出了问题?谢谢。

答案1

端口 80 是 HTTP 的标准端口。如今大多数系统都选择使用安全连接,因此它们在其上设置了重定向到 HTTPS 的存根服务器,但即使如此,要以这种方式重定向系统,它们也需要到达存根服务器并重定向,因此端口需要打开。

您的端口 443 目前根本无法工作,因为它配置错误。您将其配置为非标准端口上的普通 HTTP 服务;浏览器希望端口 443 上使用 HTTPS,因此它们尝试启动 TLS 会话并失败。(您可以像这样在非标准端口上立即以 http 形式访问服务http://你的服务器名称:443/但这很愚蠢 - 最好将 443 用于保留的安全服务。)

如果您想使用 HTTPS(端口 443)进行反向代理,为了使其正常工作,您需要两样东西:

  • listen 443 ssl让它知道这是 HTTPS 服务,而不是非标准端口上的 HTTP 服务
  • 配置证书。证书在反向代理上管理。HTTPS不可能起作用无需配置一些证书。如果您有指向此服务器的公共 DNS 名称,您还可以使用 Let's Encrypt,它将为您完成所有配置。

相关内容