HTTPS配置–基于nginx
前言:
最近这个自己搭建的博客网站到了最后的上线调试阶段,将HTTPS加入自己的网站刻不容缓,于是就开始了征服星辰大海的旅程。
一.领取阿里云免费证书
登录阿里云,如果没有账号就注册一个,找到产品分类,安全,ssl证书
选择免费型DV SSL购买,付费0元。购买之后会叫你补全信息,填写绑定的域名。
绑定成功后会返回一些信息,将这些信息添加到你的域名解析中。
添加成功后等待,当证书状态变为以签发
就说明成功了。如果很久都没有成功则再仔细看一下域名解析的主机记录与记录类型是否正确。
成功之后就是下载证书。根据服务器的类型不同选择不同的证书,因为我是使用nginx则下载nginx证书。
二.配置nginx
下载的nginx文件中有两个文件一个.pem文件,一个.key文件。找到nginx的配置文件nginx.conf,把这两个文件分别放在下面的ssl_certificate与ssl_certificate_key下。我的nginx.conf文件放在/usr/local/nginx/conf下(这个文件是安装nginx时指定的,详情可以参考我的文章Nginx在Linux服务器上安装的那些坑)
server {
listen 443 ssl;//监听443端口
server_name www.abc.cn abc.cn;//域名
ssl_certificate /usr/local/nginx/ssl/xxx.pem;
ssl_certificate_key /usr/local/nginx/ssl/xxx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:9999;
//将符和的请求发给代理服务器
}
}
如果你的nginx未开启SSL模块,在重启nginx时会报下面的错
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
查看你最初配置nginx时的参数
/usr/local/nginx/sbin/nginx -V
显示如下(如果没有–with-http_ssl_module,则说明未添加http_ssl_module模块)
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
三.添加SSL模块
切换到你解压的tar包nginx源码包下,运行
./configure --prefix=/usr/local/nginx --with-http_ssl_module
这里可能会报一些错误
:
没有PCRE library
,直接
yum -y install pcre-devel
没有OpenSSL library
,直接
yum -y install openssl openssl-devel
配置完成后运行make命令(注意不是make install)
最后停止nginx服务,重启服务
ps -ef | grep nginx//查询nginx进程号
kill -QUIT 进程号//停止nginx进程
/usr/local/nginx/sbin/nginx //启动nginx