我按照 [出色的 Digital Ocean 教程][1] 操作,SSL 证书验证有效。但是,用于访问管理员的 Drupal 登录不再激活,页面只是重新加载。我启用了 NGINX 日志的调试,结果如下。结果如下:
recv() not ready (11: Resource temporarily unavailable).
奇怪的是,我们的开发 Drupal 网站运行正常。当我比较日志时,唯一的区别是开发网站中出现了以下内容:
4 http request line: "POST /user HTTP/1.1"
以下是详细的调试日志。有什么建议吗?下面是curl -vvv
登录页面的结果。另外nginx/1.4.6 (Ubuntu)
2016/01/21 11:38:56 [调试] 12534#0: *6467 写入新 buf t:1 f:0 00000000025F8510,位置 00000000025F8510,大小:239 文件:0,大小:0 2016/01/21 11:38:56 [调试] 12534#0: *6467 http 写入过滤器: l:0 f:0 s:239 2016/01/21 11:38:56 [调试] 12534#0: *6467 http 输出过滤器“/node/add/page?render=overlay” 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 复制过滤器:“/node/add/page?render=overlay” 2016/01/21 11:38:56 [调试] 12534#0: *6467 图像过滤器 2016/01/21 11:38:56 [调试] 12534#0:*6467 xslt 过滤器主体 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 推迟过滤器“/node/add/page?render=overlay”00000000025F8670 2016/01/21 11:38:56 [调试] 12534#0: *6467 写入旧 buf t:1 f:0 00000000025F8510,pos 00000000025F8510,大小:239 文件:0,大小:0 2016/01/21 11:38:56 [调试] 12534#0: *6467 写入新 buf t:0 f:0 0000000000000000,pos 00000000006C6460,大小:132 文件:0,大小:0 2016/01/21 11:38:56 [调试] 12534#0: *6467 写入新 buf t:0 f:0 0000000000000000,pos 00000000006C6740,大小:61 文件:0,大小:0 2016/01/21 11:38:56 [调试] 12534#0: *6467 http 写入过滤器: l:1 f:0 s:432 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 写入过滤器限制 0 2016/01/21 11:38:56 [调试] 12534#0: *6467 写入:432 2016/01/21 11:38:56 [调试] 12534#0: *6467 http 写入过滤器 00000000000000000 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 复制过滤器:0“/node/add/page?render=overlay” 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 完成请求:0,“/node/add/page?render=overlay”a:1,c:1 2016/01/21 11:38:56 [调试] 12534#0: *6467 设置 http keepalive 处理程序 2016/01/21 11:38:56 [调试] 12534#0:*6467 http 关闭请求 2016/01/21 11:38:56 [调试] 12534#0: *6467 http 日志处理程序 2016/01/21 11:38:56 [调试] 12534#0: *6467 可用: 00000000025F76A0, 未使用: 0 2016/01/21 11:38:56 [调试] 12534#0: *6467 可用: 00000000025E6CC0, 未使用: 2666 2016/01/21 11:38:56 [调试] 12534#0: *6467 空闲: 000000000263C350 2016/01/21 11:38:56 [调试] 12534#0: *6467 hc 空闲: 00000000000000000 0 2016/01/21 11:38:56 [调试] 12534#0: *6467 hc 忙碌: 00000000000000000 0 2016/01/21 11:38:56 [调试] 12534#0: *6467 tcp_nodelay 2016/01/21 11:38:56 [调试] 12534#0: *6467 可重复使用的连接:1 2016/01/21 11:38:56 [调试] 12534#0: *6467 事件计时器添加:5: 65000:1453394401016 2016/01/21 11:38:56 [调试] 12534#0: *6467 发布事件 0000000002681950 2016/01/21 11:38:56 [调试] 12534#0: *6467 删除已发布事件 0000000002681950 2016/01/21 11:38:56 [调试] 12534#0: *6467 http keepalive 处理程序 2016/01/21 11:38:56 [调试] 12534#0: *6467 malloc: 000000000263C350:1024 2016/01/21 11:38:56 [调试] 12534#0: *6467 接收: fd:5 -1 / 1024 2016/01/21 11:38:56 [调试] 12534#0:*6467 recv() 未准备好(11:资源暂时不可用) 2016/01/21 11:38:56 [调试] 12534#0: *6467 空闲: 000000000263C350 2016/01/21 11:39:10 [调试] 12534#0: *6442 事件计时器删除: 3: 1453394350048 2016/01/21 11:39:10 [调试] 12534#0: *6442 http keepalive 处理程序 2016/01/21 11:39:10 [调试] 12534#0: *6442 关闭 http 连接:3 2016/01/21 11:39:10 [调试] 12534#0: *6442 可重复使用的连接:0 2016/01/21 11:39:10 [调试] 12534#0: *6442 可用: 00000000000000000 2016/01/21 11:39:10 [调试] 12534#0: *6442 可用: 00000000025E12D0, 未使用: 0 2016/01/21 11:39:10 [调试] 12534#0: *6442 可用: 000000000263DDA0, 未使用: 128
[1]:https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04?comment=42425
curl -vvv https ourdomain.org/user less
* SSLv3,TLS 握手,已完成(20):
使用 ECDHE-RSA-AES256-GCM-SHA384 进行 SSL 连接
服务器证书:
主题:CN=ourdomain.org
开始日期:2016-01-20 20:37:00 GMT
到期日期:2016-04-19 20:37:00 GMT
subjectAltName:ourdomain.org 已匹配
发行者:C=US;O=Let's Encrypt;CN=Let's Encrypt Authority X1
SSL 证书验证成功。
GET /user HTTP/1.1 User-Agent: curl/7.35.0 Host: ourdomain.org Accept: */* HTTP/1.1 200 OK
服务器 nginx/1.4.6 (Ubuntu) 未被列入黑名单
Server: nginx/1.4.6 (Ubuntu) Date: Thu, 21 Jan 2016 05:52:22 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.5.9-1ubuntu4.5 Expires: Sun, 19 Nov 1978 05:00:00 GMT Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 X-Content-Type-Options: nosniff Content-Language: en X-Generator: Drupal 7 (http://drupal.org)
答案1
答案2
您是否按照教程实现了这一步?
返回 301 https://$host$request_uri;
如果是这样,那么您很可能陷入了重定向循环,因为 nginx 会将流量从端口 80 进行 301 重定向到 443。
这本身并不坏,但如果您的配置中有其他重定向,或者 drupal 重定向到 http:// 位置,那么您就会陷入循环。
我建议您尝试在 Firefox 中安装 Firebug 扩展,启用网络模块,切换“永久”并打开您的登录页面。这样您就可以很好地了解浏览器正在执行的请求,然后您就可以看到您是否确实在 http 和 https 之间来回跳转。