如果你没有安装nginx,可以参考这里:nginx教程
如果你没有ssl证书,需要先创建一个ssl证书,如果你已经有了ssl证书,可以跳过这一步。
这里创建的ssl证书是自签名的,浏览器会提示不安全,如果你想要安全的证书,可以去购买证书。
openssl genrsa -out private.key 2048
含义:生成一个2048位的私钥,保存在private.key文件中。
openssl req -new -key private.key -out csr.pem
含义:生成一个证书签名请求,其中包含了公钥,保存在csr.pem文件中。
当你执行这一步,这里会出现一些问题,需要填写一些信息,大致如下:
Country Name (2 letter code) [XX]: 国家代码,如CN。 State or Province Name (full name) []: 州或省份名称。 Locality Name (eg, city) [Default City]: 城市名。 Organization Name (eg, company) [Default Company Ltd]: 组织名称,如公司名。 Organizational Unit Name (eg, section) []: 组织单位名称,如部门。 Common Name (eg, your name or your server's hostname) []: 常用名,如你的名字或服务器的主机名。 Email Address []: 电子邮件地址。 A challenge password []: 设置证书请求的密码。 An optional company name []: 可选的公司名称。
其中比较重要的是Common Name,这里填写的是你的域名,如:www.baidu.com。
openssl x509 -req -days 365 -in csr.pem -signkey private.key -out private.crt
含义:生成一个证书,有效期为365天,保存在private.crt文件中。
# ...... 省略其他配置
http {
# ...... 省略其他配置
server {
listen 443 ssl;
http2 on;
ssl_certificate private.crt;
ssl_certificate_key private.key;
location / {
root html;
index index.html index.htm;
}
}
}
如果你是初学者,看到省略的配置请不要慌张,你只需要在http中添加server配置即可。
注意:http2需要nginx版本大于1.9.5
注意:切记ssl_certificate
和ssl_certificate_key
请填写你自己的证书位置,或者将你创建好的证书放在当前目录下。如果你不知道你的证书位置,可以执行find / -name private.crt
查找。
注意:location
部分也是如此,你需要将root
改为你的项目根目录。root html
的意思是将html目录作为根目录,如果你的项目根目录是/home/www
,那么你需要将root html
改为root /home/www
。比如你配置的是root /home/www
;index index.html index.htm;
,那么当你访问https://localhost
时,nginx会自动寻找/home/www/index.html
或者/home/www/index.htm
文件,如果找到了,就会返回给浏览器,如果没有找到,就会返回404。
location / {
root html;
index index.html index.htm;
}
这个配置的意思是返回当前目录下的html文件夹中的index.html或者index.htm文件。
假设我们的index.html文件内容如下:
<h1>Hello,Nginx HTTP/2h1>
esc
:wq
nginx -s reload
这一步需要 root
权限,以 linux 为例,如果你是 root
用户,那么直接执行上面的命令即可,如果你不是 root
用户,那么需要在命令前加 sudo
,如下:
sudo nginx -s reload
因为我们使用的自定义证书,所以浏览器会提示不安全,作为测试,我们可以忽略这个提示。
打开浏览器,输入 https://localhost
,如果你看到了 Hello,Nginx HTTP/2
,那么恭喜你,你已经成功配置了 http/2。