一、 前提知识
- 首先我们知道访问域名时,http请求默认端口为80,https为443。
- 那么我们现在就需要对这两个端口进行监听,这里我们就要用到nginx服务器来做反向代理了。
- 但是如果我们想做https请求,就要考虑nginx服务器的数字证书问题,我们可以在阿里云服务器上购买数字证书
二、获取数字证书
- 登录到阿里云控制台,找到SSL证书功能,第一个是收费证书,第二个是免费证书,付费证书最便宜一年也要300+,作为穷人只能研究免费证书了
- 免费证书和收费证书区别阿里云官方描述
- 申请安装证书入口
- 填写信息进行申请。
域名验证方式:如果你的域名是在当前的阿里云账号下申请的,就选“自动DNS验证”,如果不在当前账号下,就选“手工DNS验证”
- 添加dns解析记录,按照上图中SSL证书验证提示,登录到域名管理控制台,为域名添加TXT记录,主机记录为_dnsauth,复制记录值。如果是自动解析,会自动进行创建。
- 申请通过之后,证书签发速度很快,大概3分钟左右就好了
- 点击部署后提示
- 跳转后点击确定
- 回到SSL证书,点击下载
- 得到一个安装包,里面有两个文件,我们至此获取到了证书,接下来要将证书部署到nginx服务器
三、搭建nginx服务器
3.1 安装nginx操作步骤
1. 创建一个文件夹/data/software用来放置软件,
mkdir -p /data/software
cd /data/software
2. 下载nginx服务器
wget -c https://nginx.org/download/nginx-1.23.1.tar.gz
3. 解压
tar -zxvf nginx-1.23.1.tar.gz
4. 安装编译工具和依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
5. 编译,因为我们后续会考虑使用https,所有make时要带上https相关依赖
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
--prefix 表示nginx安装目录
--with-http_stub_status_module 表示监视模块,可以查看目前的连接数等一些信息
--with-http_ssl_module 处理https所需要的模块
6. make编译
make
7. 安装
make install
8. 启动
cd /usr/local/nginx/sbin
./nginx
9. 将nginx指令添加到环境变量
vim /etc/profile
10. 在文件的尾部追加如下:
export NGINX_HOME=/usr/local/nginx
export PATH=$NGINX_HOME/sbin:$PATH
11. 重启配置文件,即可配置nginx全局指令
source /etc/profile
12. nginx其余指令
#停止:
./nginx -s stop
#重新加载配置文件:
./nginx -s reload
3.2 导入证书
1. 进入Nginx默认安装目录,创建证书目录,命名为cert。
cd /usr/local/nginx/conf
mkdir cert
2. 将两个证书文件上传到该目录下
3.3 修改nginx配置文件
1. 打开配置文件
vim /usr/local/nginx/conf/nginx.conf
2. 设置80端口的监听,接收http请求,location 指明默认的访问地址
server {
listen 80;
server_name yangtao.love;
# rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
# location / {
# index index.html index.htm;
# }
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /data/app/front/demo/;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3. 设置443端口监听,接收https请求
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name yangtao.love;
root html;
index index.html index.htm;
ssl_certificate cert/9182380_yangtao.love.pem;
ssl_certificate_key cert/9182380_yangtao.love.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
root /data/app/front/demo/;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4. 保存退出,刷新配置
nginx -s reload
5. 在目录/data/app/front/demo/下创建一个index.html静态页面,里面随便写点东西后上传上去,如
<!DOCTYPE HTML>
<html>
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href="css/style.css" rel="stylesheet" type="text/css" media="all"/>
<script src="js/jquery.min.js"></script>
<script src="js/script.js"></script>
<script src="js/microfiche.js"></script>
<link rel="stylesheet" href="css/microfiche.css">
</head>
<body>
<div>
HELLO WORLD
</div>
</body>
</html>
四、验证
- 先保证服务器的80端口和443端口开启
- 浏览器访问https://域名,得到正常显示,成功