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

启用Let's Encrypt证书后HTTPS响应被拦截/阻塞,HTTP正常的问题排查求助

启用Let's Encrypt证书后HTTPS响应被拦截/阻塞,HTTP正常的问题排查求助

各位大佬好,我遇到了一个头疼的问题:我的网站 http://bavarian-joke-generator.org 目前HTTP版本可以正常运行,但在通过Certbot配置Let's Encrypt证书启用HTTPS之后,HTTPS的响应似乎被拦截或者阻塞了,客户端根本拿不到正常响应。

浏览器的表现如下:

  • Firefox:(原提问未记录具体错误表现)
  • Safari:(原提问未记录具体错误表现)

我已经折腾了好一阵,实在摸不清到底哪里出问题了,想请大家帮忙看看!

已排查的细节

  • 从Nginx日志来看,我的Nginx容器已经成功发送了HTTPS响应,但客户端这边就是收不到,感觉像是中间被拦截了
    • 被阻塞的HTTPS响应日志(原提问未提供具体内容)
    • 正常工作的HTTP响应日志(原提问未提供具体内容)
  • 服务器是Hetzner提供的,当前UFW防火墙规则已配置,被屏蔽的IP不是我自己的
  • 项目完整代码可以在它的GitHub仓库查看
  • 重点说下我的Nginx配置:Nginx是作为Docker Compose的一部分运行的容器,具体配置如下:

Nginx主配置

user  nginx;

worker_processes  auto;

error_log  /var/log/nginx/error.log notice;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    #tcp_nopush on;

    keepalive_timeout 65;

    gzip on;
    proxy_max_temp_file_size 0;

    include /etc/nginx/conf.d/*.conf;
}

包含的Server块配置

server {
    server_name bavarian-joke-generator.org www.bavarian-joke-generator.org;

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/nginx/ssl/live/bavarian-joke-generator.org/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/live/bavarian-joke-generator.org/privkey.pem;

    listen 80;
    listen [::]:80;

    add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload' always;
    add_header Content_Security-Policy "default-src 'self'; script-src 'sha384-7FvcOpf85HsGS89sLrvOOHZYqgaEqbfUi87HhpbqbndTSFw+XpzbDMK5ZcxD28fe'; frame-ancestors: 'self'; form-action 'self'; base-uri 'self';";
    add_header X-Content-Type-Options: "nosniff";

    root /usr/share/nginx/html;

    error_page 400 /errors/400_wrong_input.html;
    error_page 404 /errors/404_joke_not_found.html;

    location / {
    }

    # SSL Certificate:
    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }

    location /errors/ {
        root /usr/share/nginx/html;
        internal;
    }

    location ^~ /assets/ {
        root /usr/share/nginx;
    }

    location ^~ /RegEx/ {
        root /usr/share/nginx;
    }

    location ^~ /ssr/ {
        # pass will exchange ssr/ for /:
        proxy_pass "http://${SSR_HOST}:${SSR_PORT}/";
        proxy_http_version 1.1;
        proxy_set_header   "Connection" "";
        proxy_intercept_errors on;
    }

    location ^~ /auth/ {
        # pass will exchange auth/ for /:
        proxy_pass "http://${AUTH_HOST}:${AUTH_PORT}/";
        proxy_http_version 1.1;
        proxy_set_header   "Connection" "";
        # No error pages -> Do not intercept errors
    }

    location ~ \.(?:js|.css)$ {
        root /usr/share/nginx/html;
    }
}

已尝试的解决办法

  • 将Nginx的Server块拆分成两个独立块:一个专门监听80端口,另一个监听443端口,同时配置HTTP到HTTPS的重定向
  • 重新启用UFW的防火墙规则
  • 重新续期了SSL证书
  • 通过sslhopper.com检查过SSL证书的有效性,显示正常
  • 检查过服务器上是否存在其他防火墙规则导致阻塞,暂时未发现问题

实在没辙了,有没有大佬能指点一下可能的原因?

备注:内容来源于Stack Exchange,提问作者SturmDerLiebe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:03:02