我最近在AWS的开发服务器上向一个临时子域部署了一个新的Web项目,虽然我可以使用多个不同的浏览器从我的Windows 10桌面加载登台站点,但我无法使用我的iPhone加载页面Safari或Chrome。此外,尝试通过将我的iPhone指向Fiddler HTTP代理来解决此问题导致页面加载。因此,直接来自iPhone的请求存在一些问题。在Safari中请求页面时,我看到"没有连接"错误:
Safari cannot open the page because the network connection was lost
这是一个看似不准确的消息,因为我可以通过拖尾访问日志来确认来自iPhone的请求是通过它进入Web服务器的。两个可能相关的信息:
1)我的Nginx配置302将非https流量重定向到https,如下所示:
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
return 302 https://www.example.com$request_uri;
}
当我从iPhone请求该网站时,我可以看到我的nginx访问日志记录了请求并以302响应。
2)我使用基本身份验证来保护暂存站点:
auth_basic "Staging Site";
auth_basic_user_file /etc/nginx/.htpasswd;
iPhone上不会显示基本身份验证用户名/密码提示,也不会记录nginx的其他请求。
该网站由运行Ubuntu 14.04.5 LTS和Nginx 1.4.6的AWS免费层EC2实例提供服务。该应用程序通过proxy_pass
连接到Nginx,并且是通过PM2运行的Node.js.
正如我上面提到的,使用Fiddler作为代理来调试请求/响应不起作用,因为启用所述代理会导致问题消失。我特别为这种奇怪的行为感到困惑。任何正确方向的点都将非常感激。