什么是 Nginx(Web 服务器)以及如何安装它?
什么是 Web 服务器?
每当您打开浏览器时,输入一个 URL,然后单击 Enter。基本上,您正在请求该 URL 的内容。有没有想过内容在哪里?是的,您是对的,这些是放置在远程计算机上的内容,在接受您的请求后,该 URL 的内容作为响应发回。
Web 服务器是提供所请求网页的计算机。每个 Web 服务器都有一个 IP 地址和域名。
让我们以 Web 服务器为例。
您打开您最喜欢的浏览器并输入www.geeksforgeeks.org/c-plus-plus并单击 Enter 以查看有关 C++ 的资源。在上面的网址中, www.geeksforgeeks.org是域名, /c-plus-plus是您要查看的页面。
所以 www.geeksforgeeks.org 会将您的请求路由到网络服务器,然后服务器会看到您请求的文件系统。在我们的例子中,它是/c-plus-plus。
什么是 Nginx?
它是专为实现最高性能和稳定性而设计的开源软件。让我们基本上看看为什么我们需要它,基本上看看我们如何从中受益。
为什么我们需要一个专用的网络服务器?
假设我们在 Django 或 Node 上开发我们的应用程序。所有此类框架都有内置的开发服务器来托管您的项目。但是,每当有人尝试使用内置开发服务器在生产级别托管该应用程序时,您将很难处理所有请求,同时遇到停机时间,同时仅处理 30-40 个并发请求。
Nginx 是一个专用的 Web 服务器,它解决了效率问题,并为我们提供了一种同时处理 1000 多个请求的最佳方式。
用于反向代理、缓存和负载平衡的 Web 服务器。
反向代理接受来自客户端的请求,将请求转发给可以完成它的服务器,并将服务器的响应返回给客户端。
缓存是一种存储给定资源副本并在请求时将其返回的技术。当 Web 缓存在其存储中具有请求的资源时,它会拦截请求并返回其副本,而不是从原始服务器重新下载。
负载均衡器将传入的客户端请求分发到一组服务器,它可以在其中处理并发请求,而不会在特定服务器上承受负载。
Nginx 的其他特性如下:
- 它提供 HTTP 服务器功能。
- 旨在提供稳定性和最佳性能。
- 用作电子邮件(IMAP、POP3 和 SMTP)的代理服务器。
- 它使用事件驱动和非线程架构来为每个请求提供更少的 CPU 计算。
- 它提供了可扩展性。
- 减少客户的等待时间。
- 升级可以在 Nginx 托管网站时完成,而无需任何停机时间。
我希望您现在确信为什么我们应该在生产应用程序中使用专用的 Web 服务器。
Nginx 架构
为了了解 Nginx 的进一步配置设置,我们需要先了解一下 Nginx 之前的理解。
Nginx 使用 Master-Slave 架构,其中我们有一个 master 通过分配服务器上的负载将我们的请求重新路由到它下的任何工作人员,然后在代理缓存中寻找更快的响应,否则在失败后网页是从内存本身加载的。图像演示将有助于更清楚地理解这种结构。
Nginx 的一些配置设置
Nginx 所需的主要设置存储在一个名为nginx.conf的文件中。该文件主要由许多上下文构成。
worker_processes :工作进程基本上是主控将控制的工作人员数量。更准确地说,它是一个单线程进程。所以如果你有一个像8核这样的多核处理器,你可以设置8个worker_processes来充分利用磁盘带宽,帮助它做CPU密集型的工作。
worker_connections :它是与不同客户端的同时连接数。默认为 512 或 1024。因此,假设您有 8 个 worker_processes 和 512 个 worker_connections,您可以服务的最大客户端是 worker_processes * worker_connections,即 8*512 = 4096 个连接。
access_log & error_log :默认情况下,Nginx 服务器将其事件写入上述两种类型的日志中。所有访问者的活动,从服务器请求数据都记录在 access_log 中,您可以找到访问了哪些文件以及 Nginx 如何响应它们、客户端的 IP 等等。但是如果 Nginx 遇到任何问题和故障,它会将所有这些信息记录在错误日志中以供进一步调试。
gzip :如果您想获得尽可能多的性能,它会压缩所有响应数据。但它使用大量的 CPU 资源,如果你在所有项目上使用它会减慢你的 Nginx,所以保持这个选项只在大型项目上运行。
如何安装 Nginx?
要遵循的步骤是:
- 安装 Nginx
- 调整防火墙
- 检查你的服务器
Linux(类似 Ubuntu 的发行版)
首先,在你的 Linux 发行版中打开终端,然后输入以下命令在你的系统上安装 Nginx。
# Update your system
sudo apt-get update
# After updating your system
# Install nginx using CLI, press Y to allow it to install
sudo apt-get install nginx
# Enabling Firewall
sudo ufw enable
这些是在 Linux 中安装 Nginx 和启用防火墙的一些步骤。让我们检查版本并继续启动服务器。
# checking Nginx version
nginx -v
# if output is -> nginx version: nginx/1.xx.x (ubuntu)
# you have successfully installed it
现在我们需要将规则添加到防火墙,以便您的服务器可以获取 Http 和 Https 端口上的请求。
# This commands tells you all the configuration
# that your firewall know which can be added
sudo ufw app list
# Here you'll see the output and from available options,
# you shall see (Nginx Full, Nginx HTTP, Nginx HTTPS)
# Let's add these rules to your firewall
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
现在我们需要查看添加到防火墙的规则的状态。
# To check status
sudo ufw status
现在我们将检查我们的服务器是否正在运行。
# To check the status of the server
sudo systemctl status nginx
恭喜!如果您可以在 Active 标题下看到 active (running),则表示您的服务器正在运行。
Windows(7/8/10 或 11)
点击这里进入 Nginx 的下载页面,下载一个主线版本(我这里是nginx-1.21.1.zip )。
在任何你想要的地方解压,打开文件夹并打开 Nginx 应用程序,并允许它更改防火墙中的设置和规则。
瞧!您的服务器正在运行,您可以通过浏览器中的以下链接进行检查:http://localhost/
现在你可能会对这个网页(Welcome to Nginx)的来源感到困惑。为此,让我们进入 Nginx 中的Conf文件夹,解压缩该文件夹,然后使用任何编辑器(或记事本)打开 nginx.conf 文件。
在这里,您可以看到 worker_processes、worker_connections 和其他讨论的配置设置。您可以在 HTTP -> server -> location/下获取网页的位置或将从哪些路由打开网页。这里它在根目录下(这里是一个解压缩的文件夹)表示 HTML 文件夹,index.html 页面被用作响应。
因此,每当您启动 Nginx 服务器并在浏览器中访问 localhost URL 时,如果您看到 Welcome to Nginx。我们的服务器已启动并运行!!
请阅读下一篇关于在远程服务器上设置 nginx 的文章:链接