Http 转 https 中 Nginx 的详细配置过程

摘要 本节将简要介绍从 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 要换成您的服务器网址。比如,root@123.456.678.1,其中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_rootfastcgi_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://hostrequest_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://" 。

相关推荐
岳哥说跨境2 小时前
Facebook Audience Network优化指南
网络·http·facebook
带带老表学爬虫3 小时前
http账号密码认证Http Basic Auth
网络·网络协议·http
我的钱啊djlfakjsdlfj7 小时前
远程调用 rpc 、 open feign
网络·网络协议·rpc
Hacker_LaoYi8 小时前
网络安全概论——网络加密与密钥管理
网络·web安全·https
en4818 小时前
ospf协议(动态路由协议)
网络·网络协议
前端熊猫9 小时前
Web Worker 和 WebSocket的区别
网络·websocket·网络协议
戴草帽的大z11 小时前
深入解析音视频流媒体SIP协议交互过程
经验分享·网络协议·音视频·信息与通信
麻瓜也要学魔法11 小时前
linux一键部署apache脚本
linux·运维·apache
XiaoLeisj11 小时前
【JavaEE初阶 — 网络编程】TCP流套接字编程
java·开发语言·网络·网络协议·java-ee