介绍
Nginx是世界上最受欢迎的网页服务器之一,负责托管互联网上一些规模最大、流量最高的网站,在大多数情况下比Apache更为资源友好,可以用作网页服务器或反向代理。
在本指南中,我们将讨论如何在您的 Debian 9 服务器上安装 Nginx。
前提条件
在开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 sudo 权限和一个活跃的防火墙,您可以通过遵循我们的 Debian 9 初始服务器设置指南来学习如何设置这些权限。
当你有一个帐户可用时,登录作为你的非根用户开始。
步骤1:安装 Nginx
由于 Nginx 在 Debian 的默认存储库中可用,所以可以使用apt
包装系统从这些存储库中安装。
由于这是我们此次第一次与apt
包装系统进行交互,我们还可以更新本地的包装索引,以便我们可以访问最新的包装列表。
1sudo apt update
2sudo apt install nginx
接受此程序后,apt 将为您的服务器安装 Nginx 和任何所需的依赖。
第2步:调整防火墙
在测试 Nginx 之前,需要调整防火墙软件以允许访问服务。
列出「ufw」知道如何通过键入工作的应用程序配置:
1sudo ufw app list
您应该获得应用程序配置文件的列表:
1[secondary_label Output]
2Available applications:
3...
4 Nginx Full
5 Nginx HTTP
6 Nginx HTTPS
7...
正如你所看到的, Nginx 有三种配置文件:
- Nginx Full :此配置文件打开两个端口
80 (正常,未加密的网络流量) 和端口
443 (TLS/SSL 加密的流量) - Nginx HTTP :此配置文件只打开端口 `80 (正常,未加密的网络流量)
- Nginx HTTPS :此配置文件只打开端口
443
(TLS/SSL 加密的流量)
建议您启用最限制的配置文件,仍然允许您配置的流量. 由于我们尚未为我们的服务器配置SSL,在本指南中,我们只需要允许在端口80上的流量。
你可以通过键入来实现这一点:
1sudo ufw allow 'Nginx HTTP'
您可以通过键入检查更改:
1sudo ufw status
您应该在显示的输出中看到允许的 HTTP 流量:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
7Nginx HTTP ALLOW Anywhere
8OpenSSH (v6) ALLOW Anywhere (v6)
9Nginx HTTP (v6) ALLOW Anywhere (v6)
步骤三:检查您的Web服务器
在安裝過程結束時, Debian 9 會啟動 Nginx. 網頁伺服器應該已經啟動並運行。
我们可以通过systemd
init 系统检查,以确保该服务通过键入运行:
1systemctl status nginx
1[secondary_label Output]
2● nginx.service - A high performance web server and a reverse proxy server
3 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
4 Active: active (running) since Tue 2018-09-04 18:15:57 UTC; 3min 28s ago
5 Docs: man:nginx(8)
6 Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
7 Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
8 Main PID: 2404 (nginx)
9 Tasks: 2 (limit: 4915)
10 CGroup: /system.slice/nginx.service
11 ├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
12 └─2405 nginx: worker process
正如您上面所看到的,该服务似乎已经成功启动,但是,测试这一点的最佳方法是实际上请求 Nginx 的页面。
您可以访问默认的 Nginx 定位页面,通过导航到您的服务器的 IP 地址来确认软件是否正常运行. 如果您不知道您的服务器的 IP 地址,请尝试在您的服务器的命令提示中输入以下内容:
1ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
你会得到回来的几行. 你可以尝试每个在你的网页浏览器,看看他们是否工作。
当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:
1http://your_server_ip
您应该看到默认的 Nginx 登陆页面:
此页面包含了 Nginx,以显示服务器是否正确运行。
第4步:管理 Nginx 流程
现在你有你的Web服务器运行,让我们审查一些基本的管理命令。
要停止您的 Web 服务器,键入:
1sudo systemctl stop nginx
要在停止时启动 Web 服务器,键入:
1sudo systemctl start nginx
要停止,然后重新启动服务,键入:
1sudo systemctl restart nginx
如果您只是在进行配置更改, Nginx 通常可以重新加载而不会放弃连接。
1sudo systemctl reload nginx
默认情况下, Nginx 配置为在服务器启动时自动启动. 如果这不是你想要的,你可以通过键入来禁用此行为:
1sudo systemctl disable nginx
要重新启用服务在启动时启动,您可以键入:
1sudo systemctl enable nginx
步骤5:设置服务器封锁
在使用 Nginx 网页服务器时,可使用 _server blocks (类似于 Apache 中的虚拟主机) 来封装配置细节,并从单个服务器中托管多个域。
在 Debian 9 上, Nginx 有一个默认启用的服务器块,可配置为从 /var/www/html
中的目录中服务的文档。虽然这对单个网站非常有效,但如果您托管多个网站,它可能会变得不便。
创建 example.com 的目录如下,使用-p
旗帜创建任何必要的母目录:
1sudo mkdir -p /var/www/example.com/html
接下来,与$USER
环境变量分配目录的所有权:
1sudo chown -R $USER:$USER /var/www/example.com/html
如果您尚未修改mask
值,您的 Web 根的权限应该是正确的,但您可以通过键入确保:
1sudo chmod -R 755 /var/www/example.com
接下来,使用nano
或你最喜欢的编辑器
(https://andsky.com/tech/tutorials/initial-server-setup-with-debian-9# step-six-%E2%80%94-completing-optional-configuration)创建一个样本index.html
页面:
1nano /var/www/example.com/html/index.html
内部,添加以下样本HTML:
1[label /var/www/example.com/html/index.html]
2<html>
3 <head>
4 <title>Welcome to Example.com!</title>
5 </head>
6 <body>
7 <h1>Success! The example.com server block is working!</h1>
8 </body>
9</html>
保存并关闭文件,当你完成。
为了使 Nginx 能够提供此内容,我们需要创建一个正确的服务器块,而不是直接修改默认配置文件,让我们在 /etc/nginx/sites-available/example.com
创建一个新的文件:
1sudo nano /etc/nginx/sites-available/example.com
插入以下配置块,类似于默认,但更新为我们的新目录和域名:
1[label /etc/nginx/sites-available/example.com]
2server {
3 listen 80;
4 listen [::]:80;
5
6 root /var/www/example.com/html;
7 index index.html index.htm index.nginx-debian.html;
8
9 server_name example.com www.example.com;
10
11 location / {
12 try_files $uri $uri/ =404;
13 }
14}
请注意,我们已将根
配置更新到我们的新目录中,并将server_name
更新到我们的域名中。
接下来,让我们通过从它创建一个链接到网站启用
目录来激活该文件, Nginx 在启动时会从中读取:
1sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
现在两个服务器块已启用并配置为基于其倾听
和服务器名称
指令响应请求(您可以阅读有关 Nginx 如何处理这些指令的更多信息):
example.com
: 将响应对example.com
和www.example.com
的请求。默认
: 将响应对不匹配其他两个块的 `80' 端口上的任何请求。
为了避免可能导致添加额外的服务器名称的哈希库存问题,需要在 `/etc/nginx/nginx.conf 文件中调整单个值。
1sudo nano /etc/nginx/nginx.conf
查找server_names_hash_bucket_size
指令,然后删除#
符号以不评论行:
1[label /etc/nginx/nginx.conf]
2...
3http {
4 ...
5 server_names_hash_bucket_size 64;
6 ...
7}
8...
保存并关闭文件,当你完成。
接下来,测试以确保您的任何 Nginx 文件中没有语法错误:
1sudo nginx -t
如果没有任何问题,你会看到以下输出:
1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful
通过配置测试后,重新启动 Nginx 以启用您的更改:
1sudo systemctl restart nginx
Nginx现在应该为您的域名提供服务。您可以通过导航到http://example.com
来测试此功能,您应该看到这样的内容:
步骤 6 – 熟悉重要的 Nginx 文件和目录
现在你知道如何管理 Nginx 服务本身,你应该花几分钟来熟悉一些重要的目录和文件。
内容
/var/www/html
:实际的网页内容,默认情况下仅由您之前看到的默认 Nginx 页面组成,从/var/www/html
目录中提供。
服务器配置
/etc/nginx
: Nginx 配置目录. 所有 Nginx 配置文件都位于此处./etc/nginx/nginx.conf
: 主要的 Nginx 配置文件. 这可以被修改为对 Nginx 全球配置进行更改./etc/nginx/sites-available/
: 可以存储每个站点的服务器块的目录. Nginx 不会使用本目录中找到的配置文件,除非它们链接到sites-enabled
目录。 通常,所有服务器块配置都在本目录中进行,然后通过链接到其他目录启用。- `etc/nginx/sites-en
服务器日志
/var/log/nginx/access.log
:在这个日志文件中记录到您的 Web 服务器的每一个请求,除非 Nginx 已配置为另行。
结论
现在,您已经安装了 Web 服务器,您有许多选择,您可以提供的内容类型以及您可以使用的技术来为用户创造更丰富的体验。