Nginx 发音 “engine x” ,是一个开源软件,高性能 HTTP 和反向代理服务器,用来在互联网上处理一些大型网站。它可以被用作独立网站服务器,负载均衡,内容缓存和针对 HTTP 和非 HTTP 的反向代理服务器。和 Apache相比,Nginx 可以处理大量的并发连接,并且每个连接占用一个很小的内存。
在继续之前,保证以 sudo 用户身份登录,并且你不能运行 Apache 或者 其他处理进程在80端口和443端口。
Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它,运行下面的命令:
sudo apt update
sudo apt install nginx
一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:
// 设置nginx开机启动
systemctl start nginx.service
systemctl enable nginx.service
sudo systemctl status nginx
输出类似下面这样:
现在你已经在你的服务器上安装和运行了 Nginx,你需要确保你的防火墙被配置好,允许流量通过 HTTP(80)和 HTTPS(443)端口。假设你正在使用UFW,你可以做的是启用 ‘Nginx Full’ profile
,它包含了这两个端口:
UFW 全称为 Uncomplicated Firewall,是 Ubuntu 系统上配置 iptables 防火墙的工具。UFW 提供一个非常友好的命令用于创建基于IPV4,IPV6的防火墙规则。
sudo ufw allow 'Nginx Full'
想要验证状态,输入:
sudo ufw status
输出将会像下面这样:
想要测试你的新 Nginx 安装,在你的浏览器中打开http://YOUR_IP,你应该可以看到默认的 Nginx 加载页面,像下面这样:
/etc/nginx/
目录下。/etc/nginx/nginx.conf
。/etc/nginx/sites-available
目录下。在 /etc/nginx/sites-enabled
目录下的配置文件都将被 Nginx 使用。/etc/nginx/sites-available/mydomain.com.conf
/var/log/nginx/
目录下。推荐为每个服务器配置块,配置一个不同的access和error。/home//
/var/www/
/var/www/html/
/opt/
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
特点
HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
(1) 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和许可内容。
(2) 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
优点
缺点
1. 一台可用的服务器
首先需要有一台可用的服务器,后续用作域名解析。如果没有服务器可以先购买一台云服务器。
2. 一个备案过的域名
需要一个备过案的域名,用于解析服务器的IP地址。在对应购买的域名的服务商网站控制台可以完成备案。
3. SSL证书
SSL证书有免费和收费两个渠道。
我们这边主要介绍腾讯云和阿里云(排名不分先后)两个免费申请SSL证书的方式,当然资金允许情况下也可以直接购买。
4. 阿里云申请免费SSL证书
阿里云免费证书规则:自2021年起,免费证书申请将切换到证书资源包下每个实名个人/企业主体在一个自然年内可以一次性领取20张免费证书,免费证书每张证书有效期一年。免费证书仅支持绑定一个单域名,不支持绑定通配符域名或者IP。
阿里云申请免费SSL证书文档:官方文档地址
5. 腾讯云申请免费SSL证书
腾讯云免费证书规则:只支持绑定1个域名,可以支持绑定二级域名 abc.com、或是三级域名 example.abc.com。同一主域最多只能申请20张免费证书,每张有效期一年,免费证书到期后如需继续使用证书,需要重新申请并安装。
腾讯云申请免费SSL证书文档:官方文档地址
我们如果直接用域名解析IP地址,域名也是可以访问的,但是是HTTP环境的。 我们使用的Nginx来配置升级HTTPS
Github地址:完整的单域名nginx.conf文件配置(清晰注释) – 点击进入
当我们在上面申请成功免费的SSL证书之后,点击下载证书。
下载完成会得到一个压缩包,我们解压之后选择Nginx文件夹,里面的两个文件就是我们后续需要配置的文件。 下载到本地的压缩文件包解压后Nginx文件夹包含:
这时候我们打开我们的SSH工具,进入Nginx的配置:
// 进入nginx目录,默认安装在/etc/nginx,这个目录如果未找到,可以根据nginx安装的位置进入
cd /etc/nginx
步骤一
在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到 /etc/nginx/cert
目录中(使用SSH工具附带的本地文件上传功能,将本地证书文件和密钥文件上传到Nginx服务器的证书目录[示例中为 /etc/nginx/cert
])。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key;
步骤二
然后开始Nginx配置,编辑Nginx配置文件(nginx.conf)
// 进入nginx目录,默认安装在/etc/nginx,这个目录如果未找到,可以根据nginx安装的位置进入
cd /etc/nginx
// 编辑nginx的配置文件
vi nginx.conf
步骤三
修改与证书相关的配置内容按i键进入编辑模式,增加代码,监听443端口,如下
server {
listen 443 ssl;
listen [::]:443;
server_name localhost;
ssl on;
root /usr/share/nginx/html;
index index.html index.htm;
#证书文件名称
ssl_certificate cert/a.crt;
#私钥文件名称
ssl_certificate_key cert/a.key;
ssl_session_cache shared:SSL:1m;
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;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
步骤四
执行命令 /sbin/nginx -s reload
重启服务器即可!(如果重启未成功,说明配置文件nginx.conf错误,检查是否有错误,后执行重启)
步骤五
验证是否安装成功,证书安装完成后,可通过访问证书的绑定域名验证该证书是否安装成功。
上述步骤成功之后,我们就可以通过 https://www.域名.com
来访问我们网站了,但是问题来了,因为我们申请的免费SSL证书是单域名绑定,也就是只能让https://www.域名.com
下的内容实现HTTPS访问,我们的二级域名 api.域名.com
还是只能 HTTP 访问。