七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

讲了那么久的密码学和HTTPS,毛主席曾经在《反对本本主义》一文中提到:没有调查,没有发言权。笔者引用一下:没有实践就没有发言权,本文实际来搭建一个HTTPS的服务,Web服务器用到的是大名鼎鼎的Nginx

关于Nginx默认读者朋友们都比较熟悉,本系列的正序就不再对Nginx进行介绍了。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

一、Nginx的安装

本文记录的是在centos 7.X的腾讯云服务器上安装nginx 1.8.0(nginx-1.18.0.tar.gz)的过程。

官网下载地址为:

http://nginx.org/en/download.html

上传到linux系统上。下面开始安装,首先安装依赖环境,按照如下一步一步来。

第1步,安装gcc环境

yum install gcc-c++

第2步,安装PCRE库,用于解析正则表达式

yum install -y pcre pcre-devel

第3步,zlib压缩和解压缩依赖

yum install -y zlib zlib-devel

第4步,SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

yum install -y openssl openssl-devel

第5步,解压,需要注意,解压后得到的是源码,源码需要编译后才能安装

tar -zxvf nginx-1.18.0.tar.gz

第6步,编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

mkdir /var/temp/nginx -p

第7步,在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件,只有生成了这个文件才能进行下面的编译和安装工作。

cd nginx-1.18.0

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
命令  解释
–prefix 指定nginx安装目录
–pid-path 指向nginx的pid –lock-path锁定安装文件,防止被恶意篡改或误操作
–error-log 错误日志
–http-log-path http日志
–with-http_gzip_static_module 启用gzip模块,在线实时压缩输出数据流
–http-client-body-temp-path 设定客户端请求的临时目录
–http-proxy-temp-path 设定http代理临时目录
–http-fastcgi-temp-path 设定fastcgi临时目录
–http-uwsgi-temp-path 设定uwsgi临时目录
–http-scgi-temp-path 设定scgi临时目录

执行完毕后,会看到当前目录下多出一个Makefile文件。

第8步,make编译

make

第9步,安装

make install

第10步,进入sbin目录启动nginx

安装完毕之后,实际上会根据我们的第一个配置项安装到/usr/local/nginx这个目录下。我们可以用whereis命令查找下:

进入其目录下的sbin目录去启动。

[root@VM-0-13-centos nginx-1.18.0]# whereis nginxnginx: /usr/local/nginx

./nginx

  • 停止:./nginx -s stop

  • 重新加载:./nginx -s reload

  • 检查配置是否正常:./nginx -t

查看进程:

[root@VM-0-13-centos sbin]# ./nginx [root@VM-0-13-centos sbin]# ps -ef | grep nginxroot     12124     1  0 16:07 ?        00:00:00 nginx: master process ./nginxnobody   12125 12124  0 16:07 ?        00:00:00 nginx: worker processroot     12145  3126  0 16:07 pts/0    00:00:00 grep --color=auto nginx

看到绿色加粗的两行,说明我们已经安装好了。

第11步,打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

第12步,注意点

  • 如果在云服务器安装,需要在安全组中放开默认的nginx端口:80

  • 如果在虚拟机安装,需要关闭防火墙

  • 本地win或mac需要关闭防火墙

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

二、Nginx的目录

在我们安装好后的/usr/local/nginx/目录下有三个文件夹:

drwxr-xr-x 2 root root 4096 Dec  3 16:05 confdrwxr-xr-x 2 root root 4096 Dec  3 16:05 htmldrwxr-xr-x 2 root root 4096 Dec  3 16:05 sbin

conf目录是相关的配置文件:

-rw-r--r-- 1 root root 1077 Dec  3 16:05 fastcgi.conf-rw-r--r-- 1 root root 1077 Dec  3 16:05 fastcgi.conf.default-rw-r--r-- 1 root root 1007 Dec  3 16:05 fastcgi_params-rw-r--r-- 1 root root 1007 Dec  3 16:05 fastcgi_params.default-rw-r--r-- 1 root root 2837 Dec  3 16:05 koi-utf-rw-r--r-- 1 root root 2223 Dec  3 16:05 koi-win-rw-r--r-- 1 root root 5231 Dec  3 16:05 mime.types-rw-r--r-- 1 root root 5231 Dec  3 16:05 mime.types.default-rw-r--r-- 1 root root 2656 Dec  3 16:05 nginx.conf-rw-r--r-- 1 root root 2656 Dec  3 16:05 nginx.conf.default-rw-r--r-- 1 root root  636 Dec  3 16:05 scgi_params-rw-r--r-- 1 root root  636 Dec  3 16:05 scgi_params.default-rw-r--r-- 1 root root  664 Dec  3 16:05 uwsgi_params-rw-r--r-- 1 root root  664 Dec  3 16:05 uwsgi_params.default-rw-r--r-- 1 root root 3610 Dec  3 16:05 win-utf

最关键也是最常用的是nginx.conf

html目录就是默认的nginx首页。

-rw-r--r-- 1 root root 494 Dec  3 16:05 50x.html-rw-r--r-- 1 root root 612 Dec  3 16:05 index.html

sbin下面是可执行的一个文件,用来启动nginx等操作。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

三、Nginx安装SSL模块

要在nginx中配置https,就必须安装ssl模块,也就是: http_ssl_module

基于这篇文章,我们在进行第7步的时候,新增SSL模块,改为如下配置即可,变化是多了最后一行:

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --with-http_ssl_module

下面依然是编译和安装:

make  make install

如何查看是否已经安装了SSL模块呢?可以这样看,执行./nginx -V查看:

[root@VM-0-13-centos sbin]# ./nginx -Vnginx version: nginx/1.18.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.0.2k-fips  26 Jan 2017TLS SNI support enabledconfigure arguments: --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi--with-http_ssl_module

发现最后确实已经包含了SSL模块。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

四、申请和配置证书、私钥

腾讯云服务器上即可申请免费的证书,腾讯云也提供收费证书,我们先看下免费证书和收费证书之间的区别

腾讯云的官方文档中详细说明了两者区别:https://cloud.tencent.com/developer/news/416012

也就是说,免费的证书就是让你个人开发者玩一玩用的,商用的还请老老实实交钱,不然出问题导致网站不能访问可就别哭了。

好了,如何在腾讯云申请免费的ssl证书和私钥呢?首先我们登录腾讯云的控制台。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

点击我的证书查看:(我这里已经申请到了一个免费的证书,直接可以点击下载)

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

这个页面有个“申请免费证书”,按照下一步下一步无脑配置即可。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

  • 通用名称就是你的域名

  • 申请邮箱填写你的常用邮箱

  • 证书备注名:填写一个易记的就行

  • 私钥密码:可不填写

  • 所属项目:默认项目即可

申请通过后,腾讯云会短信告知你,重新刷新就可以在“我的证书”看到已签发的证书,此时点击下载,下载下来的就是配套的证书和私钥。

下载下来的是一个压缩包,解压后可以看到:

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

可以看到,腾讯云贴心地想到了所有可能性,我们这里只关注nginx即可。打开里面是两个文件:

1_oursnail.cn_bundle.crt

2_oursnail.cn.key

第一个是证书,第二个是私钥,尤其是私钥,是万万不可泄漏出去的。我们将这两个文件上传到nginx的安装目录/usr/local/nginx/conf下。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

好了,至此,关于证书和私钥的申请和配置就说到这里。

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

五、Nginx配置和效果验证

有了证书和私钥,就差nginx的配置了,我们这里简单用nginx默认页面来做下测试。配置文件如下:

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

最后启动来测试下,可以看到,我这里监听了80端口(HTTP默认端口号)和443端口(HTTPS默认端口号),分别访问两个页面的效果:

当我们访问http://www.oursnail.cn/时展示:

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

当我们访问https://www.oursnail.cn/时展示:

七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

终于见到了可爱的小锁,OK,HTTPS服务搭建完毕。

原文始发于微信公众号(幕后哈土奇):七十四、进阶篇-使用Nginx来搭建一个HTTPS服务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/113057.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!