本文首发于:http://www.fengzheng.pub/archives/238.html html
服务器为阿里云 ECS,操做系统为 CentOS 6.5。linux
之因此要先安装
nginx
,是由于下面配置域名解析的时候能够直接在浏览器看到效果,固然了,先配置域名,而后ping
一下也是能够的nginx
下载Nginx
源码包,解压源码包,进入解压后的目录,编译配置,命令以下:api
./configure --prefix=/usr/local/nginx --with-http_ssl_module
浏览器
以上命令将nginx
安装到usr/local/nginx
目录下,并启动ssl
功能。事先确保服务器已安装open-ssl
包,如没安装可用以下命令在线安装:缓存
yum -y install openssl openssl-devel
,除此以外还须要PCRE、zlib。安全
而后执行make && make install
命令开始编译安装,直到提示安装成功便可。可到/usr/local/nginx/sbin
目录下输入./nginx
命令,便可以默认配置文件启动,若是须要指定配置文件,则用以下命令:bash
./nginx -t -c /usr/local/data/my-nginx.conf
,检查配置文件并指定一个配置文件。服务器
安装过程当中可能会提示缺乏其它依赖包,根据提示安装便可。session
若是不幸的是,以前已经安装了nginx
,可是没有编译ssl
模块,那能够根据这篇文章,从新将ssl
模块编译进去。
启动以后,若是不出意外,能够访问服务器,看到 nginx 默认页面。
为何要申请域名,这就很少说了,网站想要外部访问,总得有个域名吧,难不成直接用
IP
访问吗。就算你非得用IP
访问,那对不起,下面配置HTTPS
证书的时候须要填写域名。
购买完域名后,须要完成一系列相关信息的填写,可按提示完成便可。而后进行域名解析
主机记录若是是二级域名,例如fengzheng.pub ,这里要填写www
,若是是三级域名,例如api.fengzheng.pub,这里则要填api
;
记录值即对应的服务器 IP,点击添加便可。通常是一分钟内生效。
经过刚刚配置好的解析,例如 www.fengzheng.pub 便可访问这个域名指向的服务器。第一步安装了 nginx ,那么如今访问这个域名,应该会出现 nginx 默认页面。若是提示 DNS 解析有问题,多是本地或 DNS 服务商有缓存,清除缓存或等一段时间后再尝试。
进入阿里云控制台,“安全(云盾)”下的“证书服务”,点击购买证书,选择免费型 DV SSL,按提示走就能够,反正不用花钱的。
接下来到个人订单页面,看到证书状态是“待完成”,点击“补全”连接
接下来要求输入一个域名,由于免费证书只支持一个域名,这里能够写你申请的域名或者子域名也能够,例如a.com或者api.a.com。
以后填写我的信息,这里有个域名验证类型,分为DNS验证和文件验证,具体验证方式可查看 阿里云帮助手册。
最后到上传信息这一步,通常选择系统生成 CSR。
这里选择的是 DNS 验证方式,点击进度按钮,会弹出提示框,按提示框中的操做添加一条DNS记录。(文件验证方式会要求将一个html文件放到服务器指定的目录下,而后经过url访问到便可验证成功)
直到个人订单页面显示证书状态为已签发,即表示证书申请成功。
再以后会在个人订单列表中,操做栏看到下载按钮,点击按钮,跳转到证书下载页面,这里提供了nginx、Apache、Tomcat等证书下载
这里选择 nginx 证书。
将下载下来的证书解压,里面有两个文件一个是.key,另外一个是.pem,把这两个文件传到服务器的一个目录中。
找到 nginx 配置文件,打开编辑,加入以下代码:
server { listen 443 ssl; server_name localhost; ssl on; ssl_certificate /root/data/cert/test.pem; ssl_certificate_key /root/data/test.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location ^~/test { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_pass http://127.0.0.1:8080/test; } }
最后重启 nginx 便可。