跳转至

Nginx简易教程

Nginx是一款轻量级的Web服务器,其特点是内存占用少,启动极快,高并发能力强,相对应的,还有款叫做Apache。 本文是一个Nginx的简易教程,包括安装,并简单的配置个域名,简单的跑起一个网站。以下皆在Ubuntu1804平台实现。

安装Nginx

Ubuntu1804官方包已经包含了nginx,因此使用apt就可以直接安装,方便快捷

1
sudo apt install nginx
安装很快,一分钟的样子吧。可以通过查看版本号来确认是否安装成功
1
nginx -v
我这里显示的是这样的:
1
nginx version: nginx/1.14.0 (Ubuntu)
此时,Nginx已经在运行了,并且配置了一个默认网站,所以也可以通过访问vps的IP地址来确认是否安装成功。写这教程的时候,我这vps的IP是34.85.92.8(没错,是Google的GCE,😂) 。访问该的ip,应该能看到一个Nginx的默认页面,像这样:

增加新站点

通过上一步,已经能够直接通过IP访问默认的站点了,而通常情况下,我们需要的是通过域名来访问,同时,根据需求,同一个vps上我们还能配置多个站点。 此版本的Nginx默认配置在/etc/nginx目录下,默认情况下加载的是该目录下的nginx.conf配置文件,通过vim打开该文件,可以找到类似这样的内容:

1
2
3
4
5
6
##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
该部分定义了,我们新增的站点所需的配置文件保存的地方,默认是在conf.d和sites-enabled下面。以下通过新增zimohan.com站点来展开。 目录切换到sites-enabled,可以看到该目录中已经存在一个配置文件-defalut,即是nginx生成的一个默认站点。 通过vim新增配置文件zimohan.com.conf
1
sudo vi zimohan.com.conf
在打开的文档中输入相应的配置信息,此时可以参考默认的站点配置文件defaul😂。
1
2
3
4
5
6
server {
    server_name zimohan.com;
    root /var/www/zimohan.com;
    listen 80 ;
    index index.html index.htm index.nginx-debian.html;
}
其中,listen对应端口,标准的http使用80端口,https对应443端口,此处暂填80;root表示网页文件所在目录,index表示默认文件;server_name表示域名。为了使该配置理解生效,需要使用以下命令来重新载入配置:
1
sudo nginx -s reload
目录切换到/var/www/并新建前面提到的用来存放网站文件的zimohan.com文件夹:
1
2
cd /var/www/
sudo mkdir zimohan.com
顺便在该文件夹下新建个文件,用于访问查看效果吧。
1
2
cd zimohan.com
sudo vi index.html
并输入以下内容:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!DOCTYPE html>
<html>
<head>
    <title>Test Page</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="../css/home.css">
</head>
<body>
    你能看到此文本,表示新站点已经配置完毕!
</body>
</html> 
上述配置文件还未起效,通过以下命令让nginx重新载入配置文件:
1
sudo nginx -s reload
还差最后一步,配置域名的DNS。登录你的域名注册商后台,设置相应域名的A记录到vps的IP。待DNS生效后,就可以通过域名访问新站点了。

添加https证书支持

这两年SSL发展很快,免费的也出现了,顺应潮流为网站添加https支持,推荐使用免费的Let’s Encrypt,具体操作请移步免费的HTTPS证书-Let's Encrypt

添加https后我的配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
server {
    server_name zimohan.com;
    root /var/www/zimohan.com;
    index index.html index.htm index.nginx-debian.html;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/zimohan.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/zimohan.com/privkey.pem;
}
server {
    if ($host = zimohan.com) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name zimohan.com;
    return 404;
}