nginx HTTPS/SSL响应被阻止,HTTP响应工作正常

aiqt4smr  于 12个月前  发布在  Nginx
关注(0)|答案(1)|浏览(172)

我的网站http://bavarian-joke-generator.org正在运行.可悲的是,我无法得到HTTPS版本的工作,因为我一直遇到以下问题,因为启用它通过证书由letsencrypt.org通过Certbot:

我服务器的响应好像被拦截了

  • Firefox:

  • Safari浏览器:

* 我的问题是:*

我在这里错过了什么?我将列出以下事情已经和真的似乎是出了什么问题可以引起的资源。

详细信息:

从下面的NGINX日志中可以看出,我的Nginx容器成功发送了响应。

*HTTPS 最终被阻塞的响应:

*HTTP响应按预期工作:

服务器由Hetzner提供,以下UFW防火墙设置处于活动状态(阻止的IP地址不是我的):x1c4d 1x
整个代码可以在其GitHub repository上看到
但我特别想提到使用的NGINX配置。还要注意,NGINX作为ad docker-compose文件的一部分作为容器运行:

*配置:

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_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服务器块分成两个,分别监听端口80和443,并重定向到HTTPS块
  • 再次启用ufw规则
  • 更新我的SSL证书
  • 检查是否可以通过sslhoper.com找到我的ssl证书
  • 检查是否存在任何其他防火墙并正在阻止
olmpazwi

olmpazwi1#

所以我不能解决这个问题**,但**我能够绕过它:
我现在有一个父NGINX进程运行在我的主Hetzner提供的服务器上,NGINX子进程运行在一个容器中,正如我上面的compose文件所述。

  • 由于某些原因 *,容器的传出HTTPS响应被阻止,而新设置只直接从主服务器发出HTTPS响应。

如果这是一个Hetzner的问题或与我的任何一个问题,必须进一步调查。
更多信息可以在这里找到:

相关问题