Nginx配置HTTP 2.0实践篇(3)

接着回到nginx-build目录,然后执行下面命令编译:

cd nginx-1.9.14
sudo make && make install
 

如果没有报错那就编译成功,在终端试试 sudo nginx 启动,然后打开 能看到欢迎页,然后在终端输入 nginx -v 看到 nginx version: nginx/1.9.14。

生成 SSL/TLS 安全证书

要配置 HTTP 2.0 就需要启动 HTTPS,那就需要生成一个 SSL/TLS 证书,而 OpenSSL 正好可以做这件事情,买不起证书但自己造一个来临时用还是可以的,直接执行下面命令:

# 切换到nginx的根目录(我这里是/usr/local/nginx,请根据上一步编译时候指定的--prefix对应修改)
cd /usr/local/nginx
cd conf

# 利用openssl命令生成公钥跟密钥
openssl genrsa -des3 -passout pass:x -out cert.pass.key 2048
openssl rsa -passin pass:x -in cert.pass.key -out cert.key
openssl req -new -key cert.key -out cert.csr
openssl x509 -req -days 365 -in cert.csr -signkey server.key -out cert.crt

# 将crt跟key合并生成pem文件
cat server.crt server.key > server.pem

# 删除掉我们不需要用到的文件
rm -rf cert.crt cert.csr
 
修改Nginx配置

离成功之后一步之遥了,接下来就是最重要的一步,配置Nginx支持HTTP 2.0,修改Nginx配置文件/usr/local/nginx/conf/nginx.conf:

1.将所有HTTP请求重定向到HTTPS请求

location / {
return 301 https://$host$remote_port$request_uri;
}
 

2.配置HTTPS server

server {
listen 443 ssl http2 default_server;
server_name localhost;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

# 我用原始的下面这段启动报错了,所以注释掉改用了后面那段
#ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers 'CHACHA20:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;';
ssl_prefer_server_ciphers on;

location / {
root html;
index index.html index.htm;
}
}
 

可以注意到上面 HTTPS 的配置比之前多了一个 http2 ,这就是 ngx_http_v2_module 模块,若没有安装该模块启动一样会报错。

3.重启服务器

配置完成之后,重新启动服务器即可:

sudo nginx -s reload  

4.预览

打开 ,自动跳转到 https://localhost ,Done!

一点思考

虽然 HTTP 2.0 也已经不算是非常新的东西,要普及确实也需要很长一段时间,希望不久将来有钱买个服务器部署到自己网站上。

只有动手实践才知道看起来简单的东西实际上还是会碰到很多坑,anyway,一直在成长的路上~

下面关于Nginx的文章您也可能喜欢,不妨参考下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/56522397dd5a7542841e246fb78b7ede.html