安装 Nginx
Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它,运行下面的命令:
sudo apt update
sudo apt install nginx
一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:
sudo systemctl status nginx
输出类似下面这样:
配置防火墙
1.安装防火墙
Ubuntu20.04一般都默认安装了UFW(Uncomplicated Firewall),它是一款轻量化的工具,主要用于对输入输出的流量进行监控。如果没有安装,请用下面的命令安装:
sudo apt install ufw
正常情况安装以后应该是默认禁止状态的,输入
sudo ufw status verbose
命令,如果看到:
Status: inactive
这表示防火墙没有开启,下面启用防火墙。
2.启用防火墙
终端中输入如下命令:
sudo ufw enable
sudo ufw default deny
运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。再次输入
sudo ufw status verbose
,可以看到如下界面:
上面的默认配置表示关闭所有外部对本机的访问,但本机访问外部正常。
3.开放服务端口
现在你已经在你的服务器上安装和运行了 Nginx,你需要确保你的防火墙被配置好,允许流量通过 HTTP(
80
)和 HTTPS(
443
)端口。假设你正在使用 ufw ,你可以做的是启用 ‘Nginx Full’ profile,它包含了这两个端口:
sudo ufw allow 'Nginx Full'
想要验证状态,输入:
sudo ufw status
输出将会像下面这样:
测试安装
想要测试你的 Nginx 是否安装成功,可以在你的浏览器中打开
http://YOUR_IP
,你应该可以看到默认的 Nginx 加载页面,像下面这样:
ufw常用命令
一般的用户,只需设置如下三条命令:
# 安装防火墙
sudo apt install ufw
# 开启防火墙
sudo ufw enable
# 外来访问默认拒绝
sudo ufw default deny
就已经足够安全了,如果你需要开放某些服务,再使用
sudo ufw allow
命令开启,举例如下:
sudo ufw allow | deny [service]
打开或关闭某个端口,例如:
# 允许外部访问53端口(tcp/udp)
sudo ufw allow 53
# 允许外部访问3306端口(svn)
sudo ufw allow 3306
# 允许此IP访问所有的本机端口
sudo ufw allow from 192.168.1.111
# 允许指定的IP段访问特定端口
sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22
# 删除上面建立的某条规则,比如删除允许访问3306端口的规则
sudo ufw delete allow 3306
开启/关闭防火墙:
# 开启防火墙
sudo ufw enable
# 关闭防火墙
sudo ufw disable
# 外来访问默认允许
sudo ufw default allow
# 外来访问默认拒绝
sudo ufw default deny
查看已经定义的防火墙规则:
sudo ufw status
Nginx最佳实践
Nginx 配置文件结构以及最佳实践
-
所有的 Nginx 配置文件都在
/etc/nginx/
目录下。 -
主要的 Nginx 配置文件是
/etc/nginx/nginx.conf
。 -
为每个域名创建一个独立的配置文件,便于维护服务器。你可以按照需要定义任意多的 block 文件。
-
Nginx 服务器配置文件被储存在
/etc/nginx/sites-available
目录下。在
/etc/nginx/sites-enabled
目录下的配置文件都将被 Nginx 使用。 -
最佳推荐是使用标准的命名方式。例如,如果你的域名是
mydomain.com
,那么配置文件应该被命名为
/etc/nginx/sites-available/mydomain.com.conf
-
如果你在域名服务器配置块中有可重用的配置段,把这些配置段摘出来,做成一小段可重用的配置。
-
Nginx 日志文件(access.log 和 error.log)定位在
/var/log/nginx/
目录下。推荐为每个服务器配置块,配置一个不同的
access
和
error
。 -
你可以将你的网站根目录设置在任何你想要的地方。最常用的网站根目录位置包括:
-
-
/home/<user_name>/<site_name>
-
/var/www/<site_name>
-
/var/www/html/<site_name>
-
/opt/<site_name>
-