摘要 本节将简要介绍从 HTTP 到 HTTPS 的配置过程,并完整展示 Nginx 的相关配置信息。
经过两天断断续续的调试,终于将 http 变成 https 了。现在说说这个安装 ssl 证书的过程。
服务器是在某云上。这个过程大致分为三个步骤:申请 ssl 证书、配置证书、开启并配置端口。
第一步是申请 ssl 证书。
这个可参考一分钟带你把http项目升级成https,并且打包上线。申请成功下载后,是一个压缩文件,打开后有两个文档;其中一个是 .key文档,一个是 .pem文档。
第二步上传证书与配置Nginx。
1. 将它们上传到服务器。
从本地 Windows 上传到 远程 Ubuntu,可以用 putty。
首先在Windows下,访问 PuTTY 官方网站,下载 PuTTY 安装包。比如,我下载的是 putty-64bit-0.81-installer.msi。双击下载文件,就开始执行安装。
安装完后,可以在 Windows 命令提示符下查看版本
pscp -V
如果安装成功,应该会看到类似输出信息(以下是部分内容,并且实际是不含有行号的):
pscp: Release 0.81
Build platform: 64-bit x86 Windows
安装完成后,则可以将 Windows 中文件上传到 Ubuntu上。例如下面是Windows的命令提示符下的命令,它将 my.key 上传到了 /certificate 目录中。当然,上传前,先在Ubuntu中用mkdir 创建 certificate 目录。
pscp C:\\Users\\DELL\\Downloads\\my.key user@remotehost:/certificate/
其中 user@remotehost 要换成您的服务器网址。比如,[email protected],其中123.456.678.1是您服务器的 ip 地址。
如果只是需要从 Ubuntu 上传到Ubuntu,建议使用 scp
命令。例如:
scp /local/path/to/file user@remotehost:/remote/path/to/destination/
2. 配置 Nginx。
首先,系统是Ubuntu。这时需要停用Apache(用命令 sudo service apache2 stop),而安装 Nginx(安装过程省略)。因为第一步选证书时,就是选的与 Nginx相关的(好像没有 Apache 选项)。另外,由于网页使用了 Php,所以还需要安装php7.2-fpm(安装过程省略)。最后,也是最重要的,是下面 Nginx 的配置。若配置不好,网页会出现 乱码、404 not found、下载(即不是显示内容,而总是下载网页)、无法访问此网站 等问题。
Nginx 的配置文件是 /etc/nginx/sites-available/default 。可以用 nano 修改,比如
$ nano /etc/nginx/sites-available/default
这时就在控制台下打开了 default 文件。修改后用 Ctrl+o 再 回车 保存文档内容,Ctrl+x 是退出。配置好后,是启动,用 sudo systemctl start nginx。重新启动 Nginx 命令是 sudo systemctl restart nginx。停止Nginx 是 sudo systemctl stop nginx。
# /etc/nginx/sites-available/default 文档的内容
server {
listen 443 ssl;
server_name www.my.com; #换成您的网址
charset utf-8; # 设置字符编码为UTF-8
ssl_certificate /pathl/to/my.pem; #换成您的实际的 .pem文档的路径
ssl_certificate_key /path/to/my.key; #换成您的实际的 .key文档的路径
root /var/www/html; #一般网页都在这儿存放。比如 /var/www/html/index.html
index index.php index.html index.htm; #由于我的网页是 index.php,所以有 index.php
location / {
try_files $uri $uri/ /index.php?$query_string; #若您的网页是index.html, 那么好像php需要改成html
add_header Content-Type text/html;
}
# PHP-FPM配置
location ~ \\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; #根据实际安装版本调整数字或路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件配置
location ~* \\.(jpg|jpeg|png|gif|ico|css|js)$ {
expires max;
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name www.my.com; #//换成您的网址
return 301 https://$host$request_uri;
}
types {
text/html html;
# 其他 MIME 类型...
}
第三步是开启并配置端口。
需要注意的是云上要开启并配置443端口(过程省略),否则网页来不了,永远显示好像是“无法访问此网站”。另外,80端口也不要被占用。关闭Apache,以免它占用80端口。
对于大多数现代Linux发行版,可以用下列命令来禁用Apache开机自启:
sudo systemctl disable apache2
可以进一步确认 apache2 服务的状态是否为禁用状态,使用如下命令:
systemctl is-enabled apache2
若输出为 disabled,则说明已经成功地禁用了 apache2 的自启动功能。
执行完以上步骤后,就可以在浏览器中输入网址,比如 www.yours.com,这时,浏览器会自动添加 “https://” 。