带有Ghost 0.7.5,Nginx 1.9,HTTPS和HTTP / 2的ERR_EMPTY_RESPONSE

凯文·索特尔

问题

当我击中时kevinsuttle.com,我得到

"No data received ERR_EMPTY_RESPONSE".

当我点击时https://kevinsuttle.com,我得到了网站。

幽灵0.7.5
nginx 1.4 => 1.9.9
letsencrypt 0.2.0

Digital Ocean:Ubuntu 14.04 Ghost 1单击滴

在“网络连接>域”下,我同时拥有kevinsuttle.comwww.kevinsuttle.com作为A指向服务器IP地址(@)的记录。

DNSimple记录

| 类型 姓名| TTL | 内容|
| ------ | --------------------- | --------------- | ---- -------------------- |
| 网址| www.kevinsuttle.com | 3600(1小时)| http://kevinsuttle.com |  

Ghost的config.js中唯一修改的部分是我的域。

url: 'http://kevinsuttle.com',

Nginx 1.9

默认情况下,nginx 1.9不会创建以下目录:
/ etc / nginx / sites-available
/ etc / nginx / sites-enabled

而且通常的defaultconf不在这两个目录中创建。

相反,有一个etc/nginx/conf.d/default.conf和重要的etc/nginx/conf.d/nginx.conf您会看到很多教程告诉您删除default.conf,这似乎很好,但是无论您做什么,都不要删除nginx.conf

另外,您应该将目录移动/创建ghost.conf/etc/nginx/conf.d/目录中。这就是固定我的问题之一,因为在最后一行etc/nginx/conf.d/nginx.conf看在/conf.d/目录中包含的文件有:include /etc/nginx/conf.d/*.conf;

这是我的/etc/nginx/conf.d/ghost.conf文件:

  server {
  root /usr/share/nginx/html;
  index index.html index.htm;

  listen 443 ssl http2;

  server_name kevinsuttle.com www.kevinsuttle.com;
    ssl_certificate /etc/letsencrypt/live/kevinsuttle.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kevinsuttle.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

  location ~ /.well-known {
      allow all;
      root /var/www/;
  } 

  location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
        root /var/www/;
    }
      location /.well-known/ {
        root /var/www/;
    }
}

server {
    listen 80 ssl http2;
    server_name kevinsuttle.com;
    return 301 https://$host$request_uri;
}

现在,我一切正常,并尝试将nginx升级到1.9+,以便通过http / 2提供服务。DigitalOcean的一键式Ghost小滴默认使用nginx 1.4。

长话短说,我一直得到这个错误:

dpkg: error processing archive /var/cache/apt/archives/nginx_1.9.9-1~trusty_amd64.deb (--unpack):

我发现的唯一解决方案是

apt-get purge nginx nginx-common

然后,通过将以下行添加到我的/etc/apt/source.list文件中,我能够安装nginx 1.9

deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

现在,我简单地添加了listen 80 ssl http2;listen 443 ssl http2;,并且http / 2正常运行。但仅在https://显式输入URL

我发现了一些证据表明express不支持这一事实http/2,但是我对此并不是100%的。

任何想法将不胜感激。

西蒙妮·卡莱蒂(Simone Carletti)

我认为这与Ghost或DNS无关。

您可以排除DNS,因为www和not-www都解析为配置的IP。

➜  ~  dig kevinsuttle.com +short
162.243.4.120
➜  ~  dig www.kevinsuttle.com +short
162.243.4.120

DNS协议的工作级别比HTTP低,并且它并不关心HTTP版本或是否使用HTTP还是HTTPS。因此,我们可以排除DNS,然后检查更高级别的协议。

我还排除了Ghost / Express的问题,因为使用HTTPS时我可以向您的博客发送HTTP / 2请求。

➜  ~  curl --http2 -I https://kevinsuttle.com/
HTTP/2.0 200
server:nginx/1.9.9
date:Sun, 24 Jan 2016 19:34:30 GMT
content-type:text/html; charset=utf-8
content-length:13594
x-powered-by:Express
cache-control:public, max-age=0
etag:W/"351a-fflrj9kHHJyvRRSahEc8JQ"
vary:Accept-Encoding

只要我使用站点的HTTP版本,我还可以回退到HTTP 1.1。

➜  ~  curl -I https://kevinsuttle.com/
HTTP/1.1 200 OK
Server: nginx/1.9.9
Date: Sun, 24 Jan 2016 19:35:36 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 13594
Connection: keep-alive
X-Powered-By: Express
Cache-Control: public, max-age=0
ETag: W/"351a-fflrj9kHHJyvRRSahEc8JQ"
Vary: Accept-Encoding

因此,问题在于Nginx配置。具体来说,问题在于仅HTTP块的Nginx配置。

我目前无法尝试,但我个人认为问题在于以下内容:

listen 80 ssl http2;

它应该是

listen 80;

ssl指令用于强制侦听套接字理解ssl但是,在您的情况下,让套接字监听80以使用HTTPS没有意义。而且,使用的套接字ssl必须声明一个关联的SSL配置(也就是至少一个有效的证书和密钥)。

通常,您用于ssl配置处理HTTP和HTTPS请求的单个服务器:

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

另请注意,如Nginx文档中所述

因此不建议在现代版本中使用ssl指令。

采用http2结合非HTTPS插座也可以是一个麻烦的原因。

引用本文

虽然该规范不会强迫任何人通过TLS实现HTTP / 2,但允许您通过明文TCP来实现HTTP / 2,但Firefox和Chrome开发团队的代表都表达了仅通过TLS实现HTTP / 2的意图。这意味着HTTPS:// URL是唯一将为这些浏览器启用HTTP / 2的URL。

因此,假设有可能,通过HTTP / 2服务非https站点可能没有用。实际上,鉴于这张票描述问题似乎与您的问题相吻合,我怀疑今天是否有可能

总而言之,只需更改

server {
    listen 80 ssl http2;
    server_name kevinsuttle.com;
    return 301 https://$host$request_uri;
}

server {
    listen 80;
    server_name kevinsuttle.com;
    return 301 https://$host$request_uri;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VueJS Nginx和docker设置-本地ERR_EMPTY_RESPONSE

来自分类Dev

清除算法以生成类型为(0)到(0,1,2,3,4,5,6,7,8,9)的所有集合

来自分类Dev

将数组的元素添加为a [0],a [1] + a [2],a [3] + a [4] + a [5],a [6] + a [7] + a [8] + a [9] ...等等

来自分类Dev

C中{0,1,2,3,4,5,6,7,8,9}外的条件

来自分类Dev

我想把数组 [1,2,3,4,5,6,7,8,9,10,11] 变成数组 [1,2,3,4,5,6,7,8,9,1 ,0,1,1] 仅使用此算法

来自分类Dev

下划线或lazy.js映射(0,1,2,3,4)+(1,2,3,4,5)->(1,3,5,7,9)

来自分类Dev

apache 配置错误和 ERR_EMPTY_RESPONSE

来自分类Dev

为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7}; 不是

来自分类Dev

reg [7:0] a [3:0] 和 reg [7:0] a [0:3] 有什么区别

来自分类Dev

ValueError:logits和标签必须具有相同的形状((1、7、7、2)与(1、2))

来自分类Dev

带有arduino的7“和5” LCD的区别

来自分类Dev

带有arduino的7“和5” LCD的区别

来自分类Dev

http请求后浏览器显示err_empty_response

来自分类Dev

有没有办法只导入带有 0 和 1 的 MNIST 图像?

来自分类Dev

本地主机上的HTTP无法与DNS A记录和端口转发一起使用(ERR_EMPTY_RESPONSE)

来自分类Dev

如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

来自分类Dev

创建序列0、0、0、0、0、1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、4、4、4、4、4 ,带有seq()的4

来自分类Dev

[0,1,2,3,4]和[[0],[1],[2],[3],[4]]和有什么区别?

来自分类Dev

无限循环和线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeedaec488)

来自分类Dev

AMQP 0-9-1和1-0

来自分类Dev

Javascript - 找到 1-4-7, 2-5-8, 3-6-9 iretartions?

来自分类Dev

Nginx具有HTTP和HTTPS,但没有重定向

来自分类Dev

CSS 文本样式 - 使用带有数字 1 和 0 的动画填充文本 - HTML

来自分类Dev

读取带有 1 和 0 的 .dat 会返回一些非常奇怪的东西

来自分类Dev

在angular-js框架中将http请求发布到本地主机时获取ERR_EMPTY_RESPONSE

来自分类Dev

-1和〜0之间有区别吗?

来自分类Dev

> 0和> = 1有什么区别?

来自分类Dev

在一个表达式中创建带有setDate明天(+1)和setHours(0,0,0,0)的新Date()对象

来自分类Dev

给定一个张量 [5,4,3,4],如何生成一个常数张量,其中每行有 n 个 1 和 m 个零,n=5,4,3,4,m=0,1,2,1。

Related 相关文章

  1. 1

    VueJS Nginx和docker设置-本地ERR_EMPTY_RESPONSE

  2. 2

    清除算法以生成类型为(0)到(0,1,2,3,4,5,6,7,8,9)的所有集合

  3. 3

    将数组的元素添加为a [0],a [1] + a [2],a [3] + a [4] + a [5],a [6] + a [7] + a [8] + a [9] ...等等

  4. 4

    C中{0,1,2,3,4,5,6,7,8,9}外的条件

  5. 5

    我想把数组 [1,2,3,4,5,6,7,8,9,10,11] 变成数组 [1,2,3,4,5,6,7,8,9,1 ,0,1,1] 仅使用此算法

  6. 6

    下划线或lazy.js映射(0,1,2,3,4)+(1,2,3,4,5)->(1,3,5,7,9)

  7. 7

    apache 配置错误和 ERR_EMPTY_RESPONSE

  8. 8

    为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7}; 不是

  9. 9

    reg [7:0] a [3:0] 和 reg [7:0] a [0:3] 有什么区别

  10. 10

    ValueError:logits和标签必须具有相同的形状((1、7、7、2)与(1、2))

  11. 11

    带有arduino的7“和5” LCD的区别

  12. 12

    带有arduino的7“和5” LCD的区别

  13. 13

    http请求后浏览器显示err_empty_response

  14. 14

    有没有办法只导入带有 0 和 1 的 MNIST 图像?

  15. 15

    本地主机上的HTTP无法与DNS A记录和端口转发一起使用(ERR_EMPTY_RESPONSE)

  16. 16

    如何重复序列:r中的1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,7,8,9,10

  17. 17

    创建序列0、0、0、0、0、1、1、1、1、1、2、2、2、2、2、3、3、3、3、3、4、4、4、4、4 ,带有seq()的4

  18. 18

    [0,1,2,3,4]和[[0],[1],[2],[3],[4]]和有什么区别?

  19. 19

    无限循环和线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x7ffeedaec488)

  20. 20

    AMQP 0-9-1和1-0

  21. 21

    Javascript - 找到 1-4-7, 2-5-8, 3-6-9 iretartions?

  22. 22

    Nginx具有HTTP和HTTPS,但没有重定向

  23. 23

    CSS 文本样式 - 使用带有数字 1 和 0 的动画填充文本 - HTML

  24. 24

    读取带有 1 和 0 的 .dat 会返回一些非常奇怪的东西

  25. 25

    在angular-js框架中将http请求发布到本地主机时获取ERR_EMPTY_RESPONSE

  26. 26

    -1和〜0之间有区别吗?

  27. 27

    > 0和> = 1有什么区别?

  28. 28

    在一个表达式中创建带有setDate明天(+1)和setHours(0,0,0,0)的新Date()对象

  29. 29

    给定一个张量 [5,4,3,4],如何生成一个常数张量,其中每行有 n 个 1 和 m 个零,n=5,4,3,4,m=0,1,2,1。

热门标签

归档