在Nginx中配置ALPN(Application-Layer Protocol Negotiation)可以让你在SSL/TLS握手过程中协商使用HTTP/2。以下是配置Nginx以支持ALPN的步骤:
安装Nginx: 确保你已经安装了Nginx。如果还没有安装,可以使用包管理器进行安装。例如,在Ubuntu上可以使用以下命令:
sudo apt update
sudo apt install nginx
获取SSL证书: 你需要一个SSL证书。你可以从Let’s Encrypt免费获取,或者购买一个商业证书。
配置Nginx:
编辑Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。以下是一个示例配置:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# ALPN配置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
location / {
root /var/www/html;
index index.html index.htm;
}
# 其他配置...
}
在这个配置中:
listen 443 ssl http2; 表示监听443端口,并启用SSL和HTTP/2。ssl_certificate 和 ssl_certificate_key 指定了SSL证书和私钥的路径。ssl_protocols TLSv1.2 TLSv1.3; 指定了支持的TLS版本。ssl_ciphers HIGH:!aNULL:!MD5; 指定了加密套件。ssl_prefer_server_ciphers on; 表示优先使用服务器端的加密套件。启用HTTP/2:
在Nginx 1.9.5及以上版本中,HTTP/2是默认启用的,只要你在listen指令中指定了http2。如果你使用的是较旧的版本,可能需要手动启用HTTP/2。
重启Nginx: 保存配置文件并重启Nginx以应用更改:
sudo systemctl restart nginx
验证配置:
你可以使用浏览器访问你的网站,并检查是否成功启用了HTTP/2。你也可以使用命令行工具如curl来验证:
curl -I --http2 https://example.com
如果返回的HTTP头中包含HTTP/2,则表示配置成功。
通过以上步骤,你可以在Nginx中配置ALPN以支持HTTP/2。