SSL 中排除的子目录重定向次数过多

SSL 中排除的子目录重定向次数过多

我有一个由反向代理提供的子目录 /blog/。网站的其余部分通过 https 提供。

我尝试通过 http 提供 /blog/ 服务,但不使用 SSL,但一直收到 too_many_redirects 错误。以下是配置(编辑,以前可以正常工作,但自从我进行了 SSL 更新后,某些地方发生了变化 - 可能是 Forge 的问题 - 我不知道,但我认为找到解决方案并不重要):

# FORGE CONFIG
include forge-conf/example.com/before/*;

server {
    listen 80;
    server_name example.com;

    location /blog {
        proxy_set_header X-Original-Host $host;
        proxy_set_header X-Is-Reverse-Proxy "true";
        proxy_pass_header Set-Cookie;
        proxy_cookie_path / /blog/;
        proxy_pass http://blog.example.com/;
        expires off;
    }
    # FORGE CONFIG (DOT NOT REMOVE!)
    include forge-conf/example.com/server/*;

    location / {
        return 301 https://example.com$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name .example.com;
    root /home/forge/example.com/public;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /etc/nginx/ssl/example.com/166494/server.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/166494/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location /blog {
         return 301 http://example.com$request_uri;
    }
    # FORGE CONFIG (DOT NOT REMOVE!)
    include forge-conf/example.com/server/*;

如果我在 443 监听部分添加反向代理块,它就可以通过 https 正确提供服务 - 但由于混合内容(博客的原始服务器是 http),我无法这样做

编辑:更多信息,这里是设置 - 不理想但别无选择:blog.example.com 托管在另一台没有 SSL 的服务器上的 apache 上。example.com/blog/ 反向代理位于 blog.example.com 的博客。example.com 有 SSL 证书。我不想通过 https 提供博客,否则我需要另一个 blog.example.com 证书

答案1

您的博客似乎是通过 http 提供服务的,而转发器则通过 https 提供服务。为什么会这样?

首先,将您的博客位置从 http 服务器移至 https 服务器,删除进行转发的现有博客位置。

接下来,更改你的 http 服务器以转发所有内容,如下所示

server {
  listen 80;
  server_name example.com;
  return 301 https://example.com$request_uri;
}

我怀疑您设置上述内容是有原因的,但您没有清楚地说明原因。如果此解决方案不起作用,请编辑您的问题以更清楚、更全面地解释您的情况以及此答案不起作用的确切原因 - 最好包括 curl 显示和返回的重定向标头以及匹配的 Nginx 访问/错误日志。

相关内容