我们最近更换了测试|生产环境的服务器和主机。目前我们仍在测试,但我们的http://test.example.com,有时会向某些用户显示空白页。这种情况在桌面和移动环境中都发生过
我们使用 Amazon Route 53 DNS 作为 DNS,并且最近将托管服务提供商从 Rackspace 更改为 Linode。
配置也略有变化。Nginx 现在位于 apache 前面,用于静态资产。没有变化的是使用 php、mysql、ubuntu。
奇怪的是,99% 的时间里一切都运行正常,但在某些情况下,我们注意到我们的测试人员看到的是空白页。页面加载后似乎死机了,用户什么也看不到。我没有检查页面源代码(这是我接下来要做的事情),但这并没有发生在我身上。
nginx 服务器配置:
server {
listen 80;
server_name www.testdev.example.com;
return 301 $scheme://testdev.example.com$request_uri;
}
server {
listen 80;
server_name example.bestride.com;
root /srv/www/example.com/public_html;
index index.php;
location ~* ^.+\.(?:js|css|jpe?g|htc|xml|otf|ttf|eot|woff|gif|png|svg|ico|pdf|html|htm)$ {
access_log off;
expires 30d;
#add_header Vary Accept-Encoding;
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
location / {
try_files $uri @proxy;
}
location @proxy {
include /etc/nginx/proxy_params;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
阿帕奇:
<VirtualHost *:8080>
ServerAdmin [email protected]
ServerName testdev.example.com
ServerAlias www.testdev.example.com testdev.example.com
DocumentRoot /srv/www/example.com/public_html/
ErrorLog /srv/www/example.com/logs/error.log
CustomLog /srv/www/example.com/logs/access.log combined
<IfModule mpm_itk_module>
AssignUserId webadmin www-data example
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
rewritecond %{http_host} ^www.testdev.example.com [nc]
rewriterule ^(.*)$ http://testdev.example.com$1 [r=301,nc,qsa]
</IfModule>
</VirtualHost>
我听说浏览器会缓存 DNS 以便于查找……等等。但这确实令人担忧,因为如果用户看到空白页,他们可能会放弃浏览。
清除浏览器缓存可以解决该问题,但普通用户不会这样做。
有人遇到过这样的问题吗?有什么建议吗?
谢谢 Brian
答案1
您已完全更改环境(DNS 提供商、数据中心提供商等)。在解决空白页问题时,我不会查看您的 nginx 配置,因为那离最终用户太远了。
首先要能够复制问题并收集数据。Chrome 或 IE 具有出色的开发人员工具 (F12),可让您在问题发生时记录所有记录及其结果(IE 甚至允许您将其记录在 XML 文件中)。然后检查问题出在哪里并从那里开始工作。
是的,我见过随机重置连接的情况。一次是防火墙超载。另一次是 HTTP 服务器的 keep-alive 设置错误。这种情况层出不穷。您最好从最终用户端跟踪确切的事务,然后从那里开始工作。