首先,您需要购买域名。 您可以直接在阿里云或腾讯云上购买。 它并不昂贵。
只要不是来自 .com,花费不会超过几美元。
1、环境准备
腾讯云实例1个:
在腾讯云CVM产品首页按需创建。 本文使用的云服务器型号为S4。 请注意,购买时需勾选“免费分配公网IP”。 我们选择的操作系统是7。当然,本文中的大部分步骤对于/etc等其他系统是通用的。 下面的所有命令都在此实例内执行。
1个腾讯云域名:
在腾讯云域名注册页面选择注册。 选择一个你喜欢的域名~
以下简称wuju-.store。
2.设置域名解析
所谓添加域名解析记录,就是将域名记录与公有云上的云服务器关联起来。
腾讯云的云解析产品可以轻松管理我们的域名解析工作。
所有分析记录的添加可以在云分析控制台中设置。
腾讯云的解析生效速度非常快,所以我们可以通过域名记录登录CVM,例如:
ssh root@wuju-juwuba.store
申请SSL证书
接下来我们来申请Let's证书。 通过官方工具就可以轻松完成。 它本质上是ACME协议的客户端,专门为开发者自动管理证书申请流程而设计。
yum install certbot
证书申请
certbot certonly --standalone -n -m wuju1995123@163.com --agree-tos -d wuju-juwuba.store
应用程序执行过程大约需要十几秒,如下图:
成功后,会在/etc//live/wuju-.store/目录下生成证书相关文件:证书文件.pem和证书私钥文件.pem,稍后在Nginx配置中会用到。
设置自动定期证书续订
申请的证书将在90天后过期,但它附带了一个定期重新申请和颁发(更新)证书的工具:-renew。 当我们通过命令启动这个定时任务时,就不用担心证书过期了。
systemctl start certbot-renew.timer
3.安装Nginx
安装Nginx有两种常见的方式:通过发行包管理工具,或者通过源码编译安装。 如果您使用前者,您只需要:
yum install nginx
# Debian/Ubuntu下:apt install nginx
但目前主流发行版(如 / 等)中,由于 nginx / 等软件包版本较低,将无法支持 TLSv1.3 等功能,因此请在根据您的需求提供功能。
那么,我们来详细讲解一下如何通过源码安装最新版本的Nginx。 最新的稳定版本是1.16.0。 请注意尽可能安装最新的稳定版本。 太旧的版本不支持很多功能,例如HTTP/2(1.10之后支持)和TLSv1.3(1.15之后支持)。
最新版本的软件通常不在发行包管理工具(如Yum、APT)的软件库中,而是需要我们编译并安装源代码。 但对于我们CVM玩家来说,这根本不是问题。 跟我一起体验更大的自由度和灵活性吧~
我们选择在 /opt 目录中完成 Nginx 安装,这通常是一个合适的选择,但当然任何您习惯工作的目录都可以。
cd /opt
安装相关依赖软件包
主要是编译器、PCRE包和zlib包
yum install gcc pcre-devel zlib-devel
(这需要在/下用apt来完成,对应的包名为-dev和-dev)
下载源代码
下载该库的最新版本,版本 1.1.1b。 这是因为Nginx中的TLS协议和加解密都是由外部库(如/等)完成的,并且都是在项目中实现的。 系统默认比较旧,无法支持最新的HTTP/2和TLS功能。
只需两步:下载和解压。 无需编译和安装。
wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz
tar -zxvf openssl-1.1.1b.tar.gz
从源代码编译Nginx
下载、编译并安装 Nginx,版本 1.16.0。
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0
配置编译选项。 注意,我们需要在这里指定代码目录。 Nginx在编译时会完成编译所需的部分。 在其选项中,我们重点关注启用 http/2 和 ssl 模块。 对于其他选项,如果以后想更改,只需重新配置和编译即可。 源码安装就是这么方便随心所欲。
./configure \
--pid-path=/run/nginx.pid \
--with-http_v2_module \
--with-http_ssl_module \
--with-openssl=/opt/openssl-1.1.1b
编译安装
make && make install
Nginx默认会安装在/usr/local/nginx目录下(也可以通过编译选项指定)。
至此,我们就完成了Nginx的安装。实际执行
/usr/local/nginx/sbin/nginx
现在你可以启动Nginx服务了。 但是等等,让我们更优雅地完成这项工作。
将Nginx服务配置为系统服务
编辑文件:/lib///nginx.conf 并添加以下内容
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后执行
systemctl daemon-reload
systemctl enable nginx.service
稍后我们可以通过命令来管理Nginx服务,例如()、()等。
systemctl restart nginx.service
配置 Nginx
编辑nginx.conf(或类似配置文件)中的部分,设置证书/密钥等SSL相关参数,并将端口80上的HTTP服务重定向到HTTPS的443端口。 详情如下:
server {
listen 443 ssl http2;
server_name wuju-juwuba.store;
ssl_certificate "/etc/letsencrypt/live/wuju-juwuba.store/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/wuju-juwuba.store/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
location / {
root html;
index index.html;
}
}
server {
listen 80;
server_name wuju-juwuba.store;
if ($host = wuju-juwuba.store) {
return 301 https://$host$request_uri;
}
}