Nginx 教程:如何在 Ubuntu 20.04 下安装并配置 Nginx
2021年8月 · 预计阅读时间: 5 分钟
我们前端工程师在开发完前端项目,并把它打包成静态的网站之后,需要上传到服务器上,才能让互联网上感兴趣的用户来访问。我们之前在阿里云购买了一台远程服务器,它现在还不能用来让用户访问网站,因为静态的 HTML 文件是通过 HTTP 协议来发送到用户的浏览器上的,那就需要在服务器里面安装一个服务器 程序,来处理 HTTP 请求,并把我们的静态网站发送到用户的浏览器上。 常见的服务器程序有:
- Nginx。
- Apache。
- Tomcat。
- IIS。等等
另外我们所熟知的 Node.js,也是一个服务器程序。我们这里以 Nginx 为例,来展示如何在安装了 Ubuntu 20.04 的服务器上安装并配置 Nginx,然后上传网站测试访问。
一、安装 Nginx
安装 Nginx 需要安装 Nginx 依赖、添加 APT 源、启动 Nginx、放通防火墙端口等一系列步骤,我们分别来看一下。
1. 登录服务器
在安装 Nginx 之前需要远程 SSH 登录到云服务器上边,如果你是在本地测试安装,那么可以省略这一步。
ssh ecs
# 或
# ssh -i some/path/to/key 用户名@ip
2. 安装 Nginx 依赖包
接着安装 Nginx 的依赖包:
# 安装依赖
sudo apt install curl gnupg2 ca-certificates lsb-release
如果是以 root 用户登录的,可以省略 sudo,下同。
然后添加 Nginx 的 apt 源。 apt
是 Ubuntu 20.04 操作系统的软件包管理器,默认使用 Ubuntu 自己提供的软件源去查找软件。Nginx 有自己的软件源,这样安装的 Nginx 版本会比较新,所以可以利用它的软件源来安装。运行下边的这些命令添加 Nginx 的 apt 源:
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
再添加 Nginx 的签名密钥,把它移动到受信任的存储区。
# 获取 key
curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key
# 移动 key 到受信任的存储区
sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc
这些操作都是固定的,直接复制粘贴命令就好了。
3. 安装 Nginx
添加完 Nginx 的 apt 源之后,更新 apt,然后安装 Nginx:
sudo apt update
sudo apt install nginx
安装完成之后直接运行 nginx
这个命令来启动 Nginx:
nginx
4. 放通防火墙端口
之后需要在阿里云服务器的防火墙里边放通 80 端口,因为 HTTP 请求默认是使用 80 端口来监听的: 如果是本地服务器,并且开启了 Ubuntu 操作系统防火墙,还需要放通 Unbuntu 防火墙的 80 端口:
sudo ufw allow http
5. 访问 Nginx 示例页面
之后我们访问一下 Nginx 的测试页面,在浏览器里边输入:
http://43.21.15.16(替换为你的服务器 ip 地址)
或者,如果是本地服务器:
http://localhost
记得在 ip 前加上 http://
协议。如果能看到 Welcom to nginx 这个欢迎页面,就说明 Nginx 服务启动成功了。
二、Nginx 配置文件简介
接下来我们需要配置 Nginx,来让它加载我们的静态网站。首先看一下他的默认配置文件,默认配置文件在 /etc/nginx/conf.d/default.conf
中,我们可以用 cat /etc/nginx/conf.d/default.conf
来看一下它里面的内容:
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
配置文件的语法为:
- 由关键字加上大括号这样的形式来构成的,称为一个配置块。
- 每个配置项是由一个关键字(属性名),值(属性值),和一个分号(必须)构成的。
接下来看一下关键的配置项:
server
。代表一个服务器的配置,可以配置多个 server 块,每个 server 之间通过监听不同的端口,来处理不同的请求。listen
。server 里边的 listen 配置,是用来设置监听的端口的,这里是 80,HTTP 端口。server_name
。服务器名称,一般填写域名。如果没有可以先写 localhost 或者 服务器 IP 地址。location
。用来匹配域名后面的 URL 路径,这里匹配的是根路径。在它的里边:root
。指的是网站的根目录。index
。指定网站的首页,这里指定的是 index.html 和 index.htm。
三、添加自定义 Nginx 配置
我们可以在默认配置的基础上,添加上自定义配置,我们复制一份默认配置,并且起个别的名字,比如以域名为配置文件名,用于区分各个配置项,Nginx 会自动加载这些配置文件:
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/yourdomain.conf
使用常用的文本编辑工具,例如 nano
、vim
等打开新复制的配置文件,添加自定义的配置:
server {
server_name zxuqian.cn;
listen 80
location / {
root /var/www/html;
index index.html;
try_files $uri $uri/ $uri.html =404;
}
}