使用 Letsencrypt 启用 SSL 后,Drupal 7 登录无法在 NGINX 上运行

使用 Letsencrypt 启用 SSL 后,Drupal 7 登录无法在 NGINX 上运行

我按照 [出色的 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,po​​s 00000000006C6460,大小:132 文件:0,大小:0
2016/01/21 11:38:56 [调试] 12534#0: *6467 写入新 buf t:0 f:0 0000000000000000,po​​s 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

看起来这是(可选)配置中的一个问题域访问模块(允许使用“Drupal 方式”通过 Drupal 管理员管理子域)。

“域名 URL 方案”应设置为“https://”,并且“用于访问此域名的 URL 方案”需要设置为“活动”

只需确保正确创建 SSL 证书即可,因为这个问题提出“如果 https/ssl 随后由于该网站的某些问题而失败,管理员将无法轻松登录并更改此设置。”

答案2

您是否按照教程实现了这一步?

返回 301 https://$host$request_uri;

如果是这样,那么您很可能陷入了重定向循环,因为 nginx 会将流量从端口 80 进行 301 重定向到 443。

这本身并不坏,但如果您的配置中有其他重定向,或者 drupal 重定向到 http:// 位置,那么您就会陷入循环。

我建议您尝试在 Firefox 中安装 Firebug 扩展,启用网络模块,切换“永久”并打开您的登录页面。这样您就可以很好地了解浏览器正在执行的请求,然后您就可以看到您是否确实在 http 和 https 之间来回跳转。

相关内容