Android Web 浏览器在 Nginx Web 服务器上返回网页代码 500

Android Web 浏览器在 Nginx Web 服务器上返回网页代码 500

我发现 Android 手机上的网络浏览器行为非常奇怪(我试过 HTC Wildfire 和 HTC Desire 手机)。

我有一个使用 Nginx v0.8.54 的 Web 服务器。当我尝试在手机上打开网页时,它显示错误:

The requested item could not be loaded! (Status code: 500)

仅当我通过移动网络请求页面时才会发生这种情况。在 Wifi 上,它工作正常....但还有更多....如果我停止 Nginx 并启动 Apache Web 服务器,它在移动网络和 Wifi 上都可以正常工作。我也尝试过其他移动网络,情况也是一样的。

一些服务器统计数据:

  • 防火墙已关闭
  • Selinux 已关闭
  • 网页(使用 Nginx Web 服务器)在笔记本电脑或 PC 上的任何其他浏览器(IE、FF、Opera、Chrome、Safari)上均可正常打开
  • nginx error.log 中没有任何内容
  • 这是请求页面时 access.log 中的唯一条目:

    xxx.xxx.xxx.xxx - - [17/Mar/2011:11:19:49 -0500] 200 "GET / HTTP/1.1" 27405 "-" "Mozilla/5.0 (Linux; U; Android 2.2; en-gb; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" "-"

  • index.html 中只有“Hello World”字符串。没有可疑的 javascript 或其他内容。

....但还有更多....

如果我在另一台服务器上打开相同的页面,使用相同的 Nginx 构建,使用相同的服务器和 Web 服务器配置......它可以正常打开。

如果有人知道可能发生了什么,我将非常感激你告诉我。

谢谢!

编辑:我忘了说这个页面在 Iphone 和 Nokia 上打开正常

答案1

为手机的 IP 打开 debug_connection(在 nginx.conf 中)并发送测试连接。当我们开始使用 nginx 时,我遇到过类似的问题,这与库存缓冲区/代理设置对于最近发出的一些较大请求来说太小有关。手机可能发送了过大的标头,您只需要在 .conf 中增加这些设置即可。如果不清楚发生了什么,请使用示例请求中的 debug_connection 输出更新问题。

相关内容