Stopper 1:NGINX 代理混合内容错误

我一直遇到混合内容错误,需要帮助解决。\n\n我正在使用 Nginx(运行在 AlmaLinux 9.4 上)来反向代理 Discourse(标准 Docker 版本 26.1.3,构建 b72abbb 安装),Discourse 运行在 Ubuntu 22.04 上)。如果我设置 force https,我将无法登录。情况与之前的帖子中描述的相同。\n\n我正在寻找一种系统的方法将这个问题分解成可管理的部分。您的指导和见解在这个过程中将非常有价值。\n\nDiscourse 是一款令人印象深刻的软件。它正在将讨论转化为知识,为越来越多的公司服务,包括我们这个小型研究中心。我们已经测试了几个月,尽管遇到了一些问题,但在您的帮助下我们都克服了。\n\n我想提议将其作为我们文明讨论的标准,但在那之前,我必须解释为什么我无法解决一些看似简单的问题,比如这个问题。您的帮助将非常受欢迎!感谢您的帮助!

此主题解决了如何强制使用 HTTPS 以及登录和其他所有操作的运行问题,至少在我目前测试的范围内是这样。

不过,我仍然收到一些混合错误消息。我将继续调查并更新此主题。

谢谢!

Stopper 1 已解决!所有浏览器(我尝试了 macOS 上的 Firefox、Opera 和 Safari)都不会再显示混合内容消息。Nginx 反向代理中的此更改也解决了我在帖子 回复主题时遇到问题 中描述的问题。

作为参考,我还附上更新后的 Nginx conf 文件:

server {
    server_name forum.igfae.usc.es;

    location / {
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://172.16.57.96";
    }

    listen 443 ssl; # 由 Certbot 管理
    ssl_certificate /etc/letsencrypt/live/forum.igfae.usc.es/fullchain.pem; # 由 Certbot 管理
    ssl_certificate_key /etc/letsencrypt/live/forum.igfae.usc.es/privkey.pem; # 由 Certbot 管理
    include /etc/letsencrypt/options-ssl-nginx.conf; # 由 Certbot 管理
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # 由 Certbot 管理

}

server {
    if ($host = forum.igfae.usc.es) {
        return 301 https://$host$request_uri;
    } # 由 Certbot 管理

    server_name forum.igfae.usc.es;
    listen 80;
    return 404; # 由 Certbot 管理

}

在创建此帖子时,Nginx/1.20.1 作为反向代理运行在 AlmaLinux release 9.4 (Seafoam Ocelot) 服务器上。

Discourse 3.3.0.beta3-dev 运行在 Docker version 26.1.3, build b72abbb 上,位于 Ubuntu 22.04.4 LTS 机器上。

<meta name="generator" content="Discourse 3.3.0.beta3-dev - https://github.com/discourse/discourse version 625c71585623d891751b8abd291337fda3724947">

感谢大家!

尝试将其硬编码为 https:

proxy_set_header X-Forwarded-Proto https;

我一直难以理解这个提议。如果 $scheme 有效,为什么我们要尝试将其硬编码为 https?谢谢!

我没怎么看清楚。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.