無法連接到某些 ISP 上的網站(重定向過多)
我突然遇到了一個奇怪的問題,我很確定我已經將應用程序作為罪魁禍首消除了,但我本質上不是伺服器管理員,所以我可能是錯的。
- https://launchwestco.com
- 鋰節點
- Ubuntu 14.04.4 LTS
- Nginx 1.10.1
- 拉拉維爾 5.2
從我的家、辦公室和其他網路可以正常載入。在 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
缺少一行 for ……而且我不知道這對這個特定問題是否重要。)即使我
die('DEBUGGING');
在應用程序的前端控制器中插入像第一行這樣的程式碼(應該執行的 PHP 的第一行),錯誤仍然會發生,並且我沒有從應用程序中獲得預期的輸出。我遇到了最困難的故障排除時間。應用程序中肯定內置了重定向,但這些似乎並不是罪魁禍首,因為它們在大多數 ISP 上的行為都符合預期。僅在 Verizon Mobile 上才會出現問題(無論如何我們都知道)。
任何想法可能導致我們的問題?
您遇到的問題是您的網站在通過 IPv4 訪問時可以工作,但在通過 IPv6 訪問時返回太多重定向。
要解決它:
您的 nginx 配置有錯誤,應該會導致它無法載入。
特別是,您已
ipv6only=off
在 IPv6listen
指令中指定,但同時也指定了 IPv4listen
指令。對此的預期響應是 nginx 返回錯誤98 Address already in use
並退出(或拒絕重新載入配置)。如果 nginx 仍在執行,則可能是舊配置。您應該首先
ipv6only=off
從每個listen
指令中刪除,因為它是多餘且不必要的。然後,您應該將 IPv6
listen
指令添加到server
缺少它們的塊中。