标签: http2

Apache 上 CentOS 7 上的 HTTP/2 和 PHP7

经过一些研究,我找不到答案:如何将Apache/httpd更新到最新版本以在我的 VPS 上使用 HTTP/2 协议。我正在使用 PHP7 和基于 Apache - CentOS 7 的服务器。

CentOS 默认存储库上没有软件包更新。

[root@vps270238 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov 19 2015 21:43:13
Run Code Online (Sandbox Code Playgroud)

我真的想保留我的实际设置和虚拟主机。

apache-2.4 centos7 php7 http2

7
推荐指数
2
解决办法
2万
查看次数

nginx conf:http2 模块在 ubuntu 18.04 的 Chrome 中不起作用

我正在尝试在新的 Ubuntu 18.04 vps 上的 nginx 中设置 http2 模块。Http2 在 Firefox 中工作正常(我检查了响应头)。一些第三方网站表明我的http2配置没问题:

但是,当我尝试在 Chrome 上打开该网站时,它甚至无法打开(无法访问此站点),尽管在访问日志 ( /var/log/nginx/access.log ) 中我收到了“HTTP/ 2.0" 来自 nginx 的 200 响应,表明 nginx 的行为好像一切正​​常。

从卷曲,我有这个答案:

$ curl -I https://example.com/
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Sun, 19 May 2019 13:20:33 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options:: nosniff
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=15768000
Run Code Online (Sandbox Code Playgroud)

所以,不是 http2,但至少我可以使用 curl 回退到 http1.1

因此,显然 http2 有效,但在 Chrome(空白页面)中无效,我不知道问题出在哪里。

如果忘了说,当我用 Chrome 浏览页面时,我在错误日志中没有收到任何错误(/var/log/nginx/error.log),但是,不时会出现与 ssl 相关的错误(这是一个示例): …

nginx google-chrome http2

7
推荐指数
1
解决办法
1574
查看次数

为什么 Chrome 浏览器无法识别我的 nginx http2 服务器?

我按照Digital Ocean 论文设置了我的 Nginx conf ,现在 http2 可用...

但是在 Chrome(版本 54.0.2840.98(64 位))开发工具中,它总是在 HTTP 1/1 上:

NAME             METHOD  STATUS  PROTOCOL
shell.js?v=xx..    GET    200     http/1.1
Run Code Online (Sandbox Code Playgroud)

我的服务器运行的是支持 ALPN 和 NPN 的 Ubuntu 16.04 LTS,它附带的 openssl 版本是 1.0.2g

我使用此工具站点检查了 http2 支持,结果是:

Yeah! example.com supports HTTP/2.0. ALPN supported...
Run Code Online (Sandbox Code Playgroud)

也检查 curl 是可以的

 $ curl -I --http2 https://www.example.com
  HTTP/2 200 
  server: nginx/1.10.0 (Ubuntu)
  date: Tue, 13 Dec 2016 15:59:13 GMT
  content-type: text/html; charset=utf-8
  content-length: 5603
  x-powered-by: Express
  cache-control: public, max-age=0
  etag: W/"15e3-EUyjnNnyevoQO+tRlVVZxg"
  vary: …
Run Code Online (Sandbox Code Playgroud)

nginx google-chrome http2

6
推荐指数
1
解决办法
1万
查看次数

为什么 http2 在我的 Apache/2.4.29 上不起作用?

我试图启用我正在运行的http2模块,但它似乎不起作用。Apache/2.4.29Ubuntu 16.04

我是这样的:

sudo a2enmod http2
Run Code Online (Sandbox Code Playgroud)

然后通过添加单独激活:

Protocols h2 http/1.1
Run Code Online (Sandbox Code Playgroud)

我也在运行mpm_prefork模块,这是否会导致问题http2,如果是,有什么替代方法可以运行mpm_prefork

我正在运行共享服务器的另一件事,它只允许运行 PHP。我正在检查 suPHP,但它在他们的网站上说:

suPHP 不再维护,不会收到任何进一步的更新,甚至安全补丁。

apache-2.4 http2

6
推荐指数
1
解决办法
1万
查看次数

如何在支持 http2 的 CentOS 7 上构建 Apache httpd 2.4.20?

我花了将近一天的时间尝试为我的公司和社会使用 ALPN 和 http2 支持 EL6 和 EL7 的 Apache httpd 构建,就像我之前为 NGINX 所做的那样(针对 OpenSSL 1.0.2h 静态构建)。

首先,我尝试使用从 Fedora 获取的 OpenSSL 1.0.2h 重建 src rpms 并安装结果 rpms (openssl-devel-1.0.2h-1.el7.centos.x86_64.rpm, openssl-1.0.2h-1.el7.centos .x86_64.rpm) 来替换系统的。是的,我知道,这对于公共构建来说不是正确的方式,但我需要知道是否会起作用。

然后我重建了 nghttp2-1.7.1-1.fc24.src.rpm 并安装了结果 libnghttp2-devel-1.7.1-1.el7.centos.x86_64.rpm 和 libnghttp2-1.7.1-1.el7.centos .x86_64.rpm。

最后,在删除了一些补丁并破解了 apr 和 apr-util 之后,我成功地将 httpd-2.4.18-1.fc23.src.rpm 构建到了 httpd-2.4.18-1.el7.centos.x86_64.rpm。

普通的 HTTP/1.1 对我有用,而且还支持 ALPN,但 HTTP/2 不起作用:

$ curl -v --insecure --http2 --tlsv1.2 https://192.168.1.148
* Rebuilt URL to: https://192.168.1.148/
*   Trying 192.168.1.148...
* Connected to 192.168.1.148 (192.168.1.148) port 443 (#0)
* Initializing NSS …
Run Code Online (Sandbox Code Playgroud)

ssl https httpd apache-2.4 http2

4
推荐指数
1
解决办法
3300
查看次数

Apache mod_proxy 和 Tomcat 8.5 使用 http2

是否可以mod_proxy在带有 http2 协议的 Apache Tomcat 8.5 前面使用?如果是,很高兴看到示例配置。

编辑

具体做法是:是否可能,建议使用http2的客户端和服务器之间(Apache httpd),并继续与数据流ajp之间Apache httpdApache Tomcat

编辑 2

此答案提供了有关该主题的一些详细信息:

/sf/ask/2498837701/

tomcat mod-proxy apache-2.4 http2

3
推荐指数
1
解决办法
3123
查看次数

让 HTTP/2 在 Debian 8 上的 Apache 2.4.29 上工作

我正在尝试更新我的 apache2(Apache/2.4.29 (Debian 8))服务器以支持,http2 但在使用以下代码启用 http2 后,由于mpm_prefork不支持而无法正常工作http2

<IfModule http2_module>
    ProtocolsHonorOrder On
    Protocols h2 h2c http/1.1
</IfModule> 
Run Code Online (Sandbox Code Playgroud)

由于mpm_preforkapache (2.4.29) 不适用于http2,我尝试使用 mpm_event/mpm_worker 但它不起作用,所以我启用mpm_prefork

sudo a2dismod mpm_event 
sudo a2dismod mpm_worker 
sudo a2enmod mpm_prefork
Run Code Online (Sandbox Code Playgroud)

由于我仍在运行,php5
我应该怎么做才能在 Debian8 上获得 http2 支持?我是否必须将 php5 更新为 php7?是否有任何解决方法可以将 mpm_worker/mpm_event 与具有 http2 支持的 php5 一起使用?

阿帕奇错误日志

[http2:warn] [pid 11992] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed …
Run Code Online (Sandbox Code Playgroud)

openssl php5 apache-2.4 debian-jessie http2

3
推荐指数
1
解决办法
2257
查看次数

HTTP/2 启用不起作用

在带有 HHVM(HipHop VM 3.14.1)和 Nginx(nginx/1.10.1)的 Ubuntu 14.04.4 LTS 上

我尝试在我的虚拟主机中启用如下所示的 HTTP/2

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    root /var/www/mydomain;
    index index.html index.htm index.php;

    server_name mydomain.com;

    ssl_certificate /etc/nginx/ssl/www_mydomain_com.pem;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    access_log /var/log/nginx/localhost.laravel-access.log;
    error_log  /var/log/nginx/locahost.laravel-error.log error;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    error_page 404 /index.php;

    include hhvm.conf;  # The HHVM Magic Here

    # Deny …
Run Code Online (Sandbox Code Playgroud)

nginx hhvm http2

2
推荐指数
1
解决办法
1321
查看次数

HTTP/2 的请求行是什么?

对于 HTTP/0.9:

GET /
Run Code Online (Sandbox Code Playgroud)

对于 HTTP/1.0:

GET / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)

对于 HTTP/1.1:

GET / HTTP/1.1
Host: example.com
Run Code Online (Sandbox Code Playgroud)

HTTP/2 的请求行是什么?是不是像这样:

GET / HTTP/2.0
Run Code Online (Sandbox Code Playgroud)

还是 HTTP/2?

requestheader http2

1
推荐指数
1
解决办法
177
查看次数