如何在 Apache 中启用 HTTP/2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Apache 中启用 HTTP/2相关的知识,希望对你有一定的参考价值。
参考技术A 双击文件apache_2.2.13-win32-x86-no_ssl.msi将自动安装Apache HTTP Server 2.2.13,假设安装目录是%APACHE2_HOME%。安装过程中有以下选项:for All Users, on Port 80, as a Service
only for the Current User, on Port 8080, when started Manually
推荐将Apache安装成启动服务(as a Service),在端口80侦听。如果安装成手动启动并在端口8080侦听,一来会和Tomcat占用的端口号冲突,二来在手动启动和停止Apache服务器的时候我遇到了一些麻烦。
如果已经有一个老版本的Apache服务器(如Apache 1.3)被安装成了启动服务并占用了端口80,可以进入老版本Apache服务器的安装目录(Apache.exe文件所在的目录),用以下命令将之关闭和移除:
apache -k shutdown
apache -k uninstall
如果没有把Apache 2安装成启动服务,可以使用以下命令增加Apache2启动服务:
%APACHE2_HOME%\bin\apache -k install
Apache 2安装成功后会在Windows启动时自动在端口80启动。同时启动的还有ApacheMonitor(该程序被加在开始/程序/启动菜单中)。ApacheMonitor可以监视Apache 2的运行状况,并提供方便的启动,关闭和重启操作,类似于Apache 1.3中的apmgr.exe。对于热中于手动操作的用户来说,也可以退出ApacheMonitor,并将之从开始/程序/启动菜单中删除,这并不影响Apache 2的运行。
手动启动、关闭和重启Apache 2的方法如下:
%APACHE2_HOME%\bin\apache -k start
%APACHE2_HOME%\bin\apache -k restart
%APACHE2_HOME%\bin\apache -k shutdown
可能出现的问题和解决方法:
当启动、重启或关闭Apache 2时出现提示:No installed service named apache2 - Apache 2没有被安装成启动服务,需使用命令 %APACHE2_HOME%\bin\apache -k install 将之安装成启动服务。
当启动Apache 2时出现提示:Could not bind to address 0.0.0.0:80 - 有其它程序占用了80端口,它们可能是老版本的Apache,也可能是其它的HTTP服务器(如Windows的IIS),需要将它们先关闭才能在端口80启动Apache 2
或者,由于是IIS在运行,IIS使用了80端口号,要把apache改成Port 8080,
改httpd.conf文件中的listen 80-->listen 8080,
改完-->remove apache-->reinstall apache,
然后restart apache services,本回答被提问者采纳
如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持
HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进。HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 Web 应用程序会更快。在本篇教程中,我们将像你展示如何在安装有 Ubuntu 或 CentOS 作为操作系统的 Linux VPS 上使用开启 Nginx 的 HTTP/2 协议。如果你使用 Apache,你可以查看我们的另一篇教程:如何在 Ubuntu 上开启 Apache 的 HTTP/2 协议[1]。
必备条件
为了能够按照本篇教程最终在服务器上启用 HTTP/2 协议,你需要先安装好 Nginx 。并且确保功能正常而且配置没有错误。你可以使用下面的命令来检查一下:
sudo nginx -t
此外,你需要有服务器的 root 访问权限,或者至少有一个具有 sudo 权限的非 root 系统用户,以便你在修改 Nginx 配置文件的时候不会出现权限问题。最后你需要有一个域名和一个颁发给这个域名的有效的 SSL 证书。
在 Ubuntu 上开启 Nginx 的 HTTP/2 协议
为了在 Ubuntu VPS 上开启 Nginx 的 HTTP/2 协议,你需要编辑默认的 Nginx 的服务(server
)块,我们使用的是 nano
,你可以使用你自己的文本编辑器。
sudo nano /etc/nginx/sites-available/default
增加下面的服务块:
server {
server_name domain.com www.domain.com;
listen 443 ssl http2 default_server;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
ssl_certificate /etc/nginx/ssl/domain.com.crt;
ssl_certificate_key /etc/nginx/ssl/domain.com.key;
}
server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://$server_name$request_uri;
}
确保 domain.com
替换成你真正的域名。 此外,应正确设置文档根(root
)目录,还有 SSL 证书和密钥的路径。
当你编辑完成这个服务块之后,需要保存并关闭文件。使用以下命令检查 Nginx 配置是否有错误:
sudo nginx -t
为了刚刚的改变生效,需要重启 Nginx:
sudo systemctl restart nginx.service
如果你想为另一个域名开启 HTTP/2 协议,你可以查看我们的博客如何在 Ubuntu 和 CentOS 上设置 Nginx 服务块[2]。
在 CentOS 上开启 Nginx 的 HTTP/2 协议
为了在 CentOS VPS 开启 Nginx 的 HTTP/2 协议,你需要按照 Ubuntu 上完全相同的步骤做。唯一的不同点是 Nginx 块文件的位置。为了在 CentOS 上编辑默认的 Nginx 服务块,你需要进入 /etc/nginx/conf.d
这个文件夹。
# nano /etc/nginx/conf.d/default.conf
再次检查配置是否有错误,保存并关闭文件,然后使用以下命令重新启动 Nginx 服务:
# systemctl restart nginx.service
为了检测 Nginx 的 HTTP/2 协议是否开启成功,你可以使用一些在线 HTTP/2 检测工具
以上是关于如何在 Apache 中启用 HTTP/2的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Apache 2.4.46 在 CentOS7 上启用 http2
如何使用 Apache HttpClient 5 启用线路日志记录