无法连接到某些 ISP 的网站(重定向次数过多)

无法连接到某些 ISP 的网站(重定向次数过多)

我突然遇到了一个奇怪的问题,我很确定我已经排除了应用程序是罪魁祸首,但我本质上不是服务器管理员,所以我可能是错的。

从我的家里、办公室和其他网络,它加载得很好。在 Verizon 上,它无法加载,并显示重定向次数过多的错误。在我的手机或与手机绑定的笔记本电脑上加载时,情况确实如此。

这个问题似乎是昨晚出现的,或者至少我们是那时注意到的。

我怀疑是服务器配置出了问题,但我的 Nginx 配置似乎正确:

server {
    listen 80;
    listen [::]:80 ipv6only=off;

    server_name launchwestco.com *.launchwestco.com;
    rewrite ^ https://$host$request_uri? permanent;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=off;

    server_name launchwestco.com *.launchwestco.com;
    root /home/forge/envoyer/com.launchwestco/current/public;
    client_max_body_size 55M;
    underscores_in_headers on;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate [...]/server.crt;
    ssl_certificate_key [...]/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location ~* /auth/(.+) {
        return 301 /authentication/$1;
    }

    # FORGE CONFIG (DOT NOT REMOVE!)
    include forge-conf/launchwestco.com/server/*;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/launchwestco.com-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

upstream discourse { server 127.0.0.1:85; }
server {
    listen 443 ssl;
    server_name community.launchwestco.com;
    return 301 http://community.launchwestco.com$request_uri;
}

server {
  listen 80;
  server_name community.launchwestco.com;

    # FORGE CONFIG (DOT NOT REMOVE!)
    include forge-conf/launchwestco.com/server/*;

  location / {
    access_log off;
    proxy_pass http://discourse;
  }
}

netstat -tlp显示以下内容(仅截断为 http/s 输出):

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:http                  *:*                     LISTEN      4880/nginx -g daemo
tcp        0      0 *:https                 *:*                     LISTEN      4880/nginx -g daemo
tcp6       0      0 [::]:https              [::]:*                  LISTEN      4880/nginx -g daemo

(我不确定为什么[::]:http缺少一行......而且我不知道这对这个特定问题是否重要。)

即使我插入像die('DEBUGGING');应用程序前端控制器中的第一行这样的代码(应该运行的第一个执行的 PHP 行),错误仍然会发生,并且我无法获得应用程序预期的输出。

我很难排除故障。应用程序确实内置了重定向,但这些重定向似乎不是罪魁祸首,因为它们在大多数 ISP 上的表现都符合预期。只有 Verizon Mobile 才会出现此问题(无论如何我们都知道)。

有什么想法可能导致我们的问题吗?

答案1

您遇到的问题是,您的网站通过 IPv4 访问时可以正常运行,但通过 IPv6 访问时会返回太多重定向。

解决此问题:

你的 nginx 配置有错误应该导致其加载失败。

具体来说,您已ipv6only=off在 IPv6listen指令中指定,但listen同时还指定了 IPv4 指令。对此的预期响应是 nginx 返回错误98 Address already in use并退出(或拒绝重新加载配置)。如果 nginx 仍在运行,则很可能使用的是旧配置。

您应该首先ipv6only=off从每个listen指令中删除,因为它是多余的和不必要的。

然后,您应该将 IPv6 指令添加到缺少它们的块listen中。server

相关内容