Nginx与HTTPS配置

Nginx是高性能的轻量级Web服务器,由于它能提供HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,因此广泛应用于Web服务当中。掌握它的配置也就比较重要啦。

Linux的编辑器

在配置Nginx之前,首先我们需要掌握Linux的编辑器方面的知识。前面我们让大家下载了VS Code编辑器,这个编辑器非常管用,可以打开很多不同格式的代码文件,但是我们的Linux一没有图形界面,二没有安装VS Code,我们想编辑服务器里面的代码文件,应该怎么编辑呢?

我们可以使用Linux自带的文本编辑器,使用命令行终端连接服务器之后输入上节内容所述的命令,我们可以查看Linux安装了哪些文本编辑器。

在列表中我们可以找到nano和vim编辑器,我们要编辑配置文件的时候就会用到它们,这里我们推荐使用nano。nano编辑器是Linux自带的编辑器,无需额外下载。

Nginx配置

确认命令行终端连接上服务器之后,输入以下代码打开nginx的配置文件。

这行命令的意思是使用nano编辑器打开nginx的default配置文件,nginx的配置文件的路径是/etc/nginx/sites-available,大家可以使用FileZilla来查看一下。打开之后我们会看到里面的内容,找到如下代码(可以通过键盘的上下键来进行浏览):

当然在内容上我们删减了一些东西,大家注意每行前面的#是注释的意思,也就是说前面加一个#,表示这段代码或配置不会被执行。default配置文件真正有效执行的内容就是上面这些。

虽然nano已经是linux非常好用的一个编辑器了,但是大家操作的时候会和平时我们使用的编辑器有很大的区别,而且体验会差不少。在对打开的文件如default进行编辑时,可以使用键盘的上下左右键来移动光标,移动到需要修改的地方,使用键盘的删除键来修改

我们将上面的代码改成以下内容:

  • 在index文件和index.html文件中间加一个index.php,这个是指向优先级,大家可以先改就OK,以后会有机会来理解;

如果没有设置这一项,使用php开发的网站会不能直接使用hackwork.org打开,而是需要在后面加hackwork.org/index.php才行。我们也可以反向理解,当我们输入hackwork.org时,其实网站打开的就是hackwork.org/index.php,只是因为有了nginx的这项配置才不用那么麻烦啦。

  • server_name _;这里改成你的域名地址,如果你的网站已经做了域名解析,那就用你的域名地址,比如hackwork.org这样的格式,前面不要加http之类的;将server_name后面的值改成如下格式,比如我们的域名是hackwork.org,可以改成如下:
  • try_files $uri $uri/ =404;改成try_files $uri $uri/ /index.php?$query_string;

如果没有配置这一项,使用php开发的网站会打不开二级页面,比如hackwork.org/handbook/website/65/

  • location配置添加php解析,location ~ \.php

如果没有配置这一项,当浏览器打开hackwork.org/index.php不会解析php文件,而会直接下载

  • location配置.ht文件请求

如果没有配置这一项,其他人就可以访问到网站根目录下的一些重要的配置文件,而这些重要的配置文件通常都是以ht字母开头,比如.htaccess,.htpasswd等文件

将default配置文件最终改成如下内容

当我们按照上面的要求,把default配置文件改成以上内容之后,在键盘上按Ctrl/Control键+字母键X,即可退出编辑。

这个时候命令行会跳出是否保存修改内容

输入Y或y即可确认。

为了保证我们的nginx配置的没有问题,我们可以输入以下代码测试一下

如果出现如下代码:

则nginx配置文件写的没有错误。

就像我们重启软件一样,我们在配置完服务器之后也需要重启Nginx让配置生效,这个时候我们只需要在命令行里输入以下命令即可:

为什么用reload而不是restart?这里的reload 是重新加载配置文件,Nginx的服务不会中断,如果配置出错会rollback用上一次正确配置文件保持正常运行。restart 是重启会先stop后start,会造成服务一瞬间的中断,如果配置文件出错会导致服务启动失败。

 HTTPS

https是在http协议基础上增加了使用SSL加密传送信息的协议,反正就是网站更加安全就对了。你只需要有一张被信任的 CA ( Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,并且将它部署到你的网站服务器上。现在所有的网站都应该要弄成https的。

Google Chrome浏览器会把非https的网站标记为不安全,国内非常多的传统的网站都没有https,这就比较落后了。微信小程序会要求请求的网站都必须是https的,所以掌握https对我们开发小程序也是很有帮助的。

那怎么把我们的网站配置成https的呢,首先确认SSH终端连接上了服务器。安装python资源包支持:

输入以下命令添加ppa源,

更新apt源

安装Certbot,

配置SSL证书到服务器,将下面的hackwork.org改成自己的域名

这时会需要你输入你的一些个人资料,比如邮箱(可以联系到你的邮箱)等资料,之后会要求你是否同意他们的服务协议:

这时,输入字母a或A之后按Enter确认即可。

接下来会要求你选择是否强制跳转,我们可以选择2即可。

也就是当大家输入http://hackwork.org时会强制跳转到https://hackwork.org.

不过Let’s Encrypt 生成的免费证书为3个月时间,但是我们可以在配置了证书之后的60-90天,使用以下命令无限次续签证书

本节任务

  1. 了解如何对Nginx进行配置;
  2. 学会给网站添加https配置;