Nginx http 到 https 无法远程运行

Nginx http 到 https 无法远程运行

我曾尝试利用此网站上的其他答案来修复 DO Droplet 上 YouTrack 安装的 http 重定向,但均未奏效,因此我发布了此问题并概述了我发现的问题。由于这会影响根域,因此我将重点关注根域信息并假设修复将适用于任何子域。

我目前有一个站点可用配置,其中有两个文件当前已启用。

例子

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name *.example.com;
    return 301 https://$host$request_uri;
}
server {

    server_name example.com;

    listen 443;
    #certbot stuff... This works correctly
}

你追踪

server {
    #youtrack certbot https setup. Works correctly.
}

目前我可以访问https://example.comhttps://projects.example.com没有任何问题。但是,当我尝试访问http://example.com或者http://projects.example.com,我收到超时连接错误。

curl -I -L http://example.com在远程服务器上使用可提供以下信息:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.10.3 (Ubuntu)
Content-Type: text/html
Connection: keep-alive
Location: https://example.com

HTTP/1.1 200 OK
...

但是,curl -I -L http://example.com在本地机器上使用时会挂起等待响应。

答案1

连接超时通常意味着路由或防火墙设置不当。由于 HTTPS 连接正常,因此路由设置不当的可能性不大,而且路由通常不依赖于数据包内容 (*)。

也许有人在防火墙中只开放了HTTPS(端口443)而没有开放HTTP(端口80),没想到会使用HTTP。

(*) 在 Linux 中,您可以使用iptables标记数据包,然后在 Linux 的高级路由功能中使用这些防火墙标记以不同的方式路由这些数据包,但这只是例外。

相关内容