温馨提示:这篇文章已超过511天没有更新,请注意相关的内容是否还可用!
在关于 Nginx 的基础文章中,我们总结了什么是 Nginx,以及如何在您的系统上安装和设置它。Nginx 是一款高性能的 Web 服务器和反向代理服务器,它可以处理高并发的网络请求,同时还提供了负载均衡、缓存、SSL 加密等功能。Nginx 最初是由俄罗斯的程序员 Igor Sysoev 开发的,现在已经成为了全球最受欢迎的 Web 服务器之一。
Nginx 是一款高性能、可扩展、功能丰富的Web服务器和反向代理服务器,可以帮助用户提高系统的可用性和性能,保护应用服务器的安全性和稳定性,提高网站的访问速度,保护用户的隐私。
使用 Nginx 有以下几个优点:
高性能:Nginx采用了事件驱动的异步非阻塞架构,可以处理大量的并发请求,同时还能够保持低的内存占用和CPU负载。
负载均衡:Nginx可以通过负载均衡来分配请求到多个服务器上,从而提高系统的可用性和性能。
反向代理:Nginx可以作为反向代理服务器,将请求转发到后端的应用服务器上,从而保护应用服务器的安全性和稳定性。
缓存:Nginx可以通过缓存来提高网站的访问速度,减少对后端服务器的请求次数。
SSL加密:Nginx可以提供SSL加密,保护网站的安全性和用户的隐私。
在下面的教程中,我们将向您概述现代 Web 服务器软件的基本命令和配置选项。
中央控制单元:nginx.conf
Nginx 是基于事件的,因此与 Apache 的工作方式不同。 单个请求不被归类为新的工作流程(必须为其加载所有模块),而是被归类为事件。 这些事件被划分到现有的工作进程中,由初级主进程维护。 nginx.conf 配置文件定义了最终存在的工作进程的数量,以及服务器请求(即事件)的划分方式。 您可以在 /usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx 这些文件中找到它们。
管理进程并采用新配置
Nginx 安装后自动启动,但您可以使用以下命令启动它:
1 sudo service nginx start
Web 服务器软件运行后,您可以通过使用 -s 参数和特定信号对进程(主要是主进程)进行寻址来对其进行管理。 对应命令的语法比较不起眼:
1 sudo nginx -s signal
对于“信号”,您有以下四种可能性:
stop:nginx 立即终止。
quit:nginx 在所有活动请求都已得到答复后终止。
reload:重新加载配置文件。
reopen:重新启动日志文件。
用于重新加载配置文件的重新加载选项是进行更改而无需终止网络服务器软件并随后重新启动它的好方法。 无论如何,要接受更改,您必须决定是要完全重新启动服务器还是只需要重新加载 nginx。 如果您选择后一个选项并执行了以下命令,则主进程会收到将更改应用到 nginx.conf 文件的指令:
1 sudo nginx -s reload
为此,首先检查语法的准确性。 如果有积极的反馈,新设置将使主流程启动新的工作流程并同时停止旧流程。 如果无法验证语法,则会保留旧的配置状态。 一旦处理完所有活动的请求,所有活动的工作流就会终止。
此外,您还可以使用 kill 等工具针对 nginx 进程。 您只需要相应的进程 ID,它可以在 /usr/local/nginx/logs 目录或 /var/run 目录下的 nginx.pid 文件中找到。 例如,如果主进程的 ID 为 1628,则可以使用序列中的 kill 和 quit 信号终止它。
1 sudo kill -s quit 1628
您还可以使用服务程序 Ps 来显示所有正在运行的 nginx 进程的列表:
1 sudo ps -ax | grep nginx
如何规范静态内容的传递
您很可能使用 Web 服务器来传送图像、视频或静态 HTML 内容等文件。 为了提高效率,最好为不同的内容类型选择不同的本地目录。 首先创建一个示例目录 /data/html 并在其中放置一个示例 HTML 文档 index.html,然后创建一个包含一些示例图像的文件夹 /data/images。
对于下一步,必须通过在服务器块指令中保存这两个目录将这两个目录输入到配置文件中,而服务器块指令又是 HTTP 块指令的子指令。 默认情况下已经设置了各种指令,您可以先使用 (off) 将其关闭。 然后简单地创建一个单独的服务器块语句:
1
2
3
4 http {
server {
}
}
在此服务器块中,您应该指定包含图像和 HTML 文档的两个目录。 对应的结果如下:
1
2
3
4
5
6
7
8
9 server {
location / {
root /data/html;
}
location /images/ {
root /data;
}
}
此配置是侦听端口 80 并可通过本地主机访问的服务器的默认设置。 所有 URI 以 /images/ 开头的请求现在都将从 /data/images 目录请求文件。 如果不存在合适的文件,将出现一条错误消息。 所有 URI 不以 /images/ 开头的 nginx 事件都被传递到 /data/html 目录。
不要忘记重新加载或重新启动 nginx 以应用更改。
设置一个简单的 Nginx 代理服务器
Nginx 经常被用来(而不是实际的服务器)来运行代理服务器来接收传入的请求。 它根据各种标准过滤它们,转发它们,并将相应的响应传递给客户。 缓存代理特别受欢迎。 它们直接传送本地存储的静态内容,并且只将所有进一步的请求转发给服务器。 防火墙代理也很常见,可以过滤掉不安全或不需要的连接。 以下是缓存代理的示例,它从本地目录检索请求的图像并将所有进一步的请求转发到 Web 服务器。
第一步,您需要在 nginx.conf 中定义主服务器:
1
2
3
4
5
6
7 server {
listen 8080;
root /data/up1;
location / {
}
}
与前面的示例相反,使用 list 指令是因为端口 8080(而不是标准端口)将用于传入请求。 您还应该创建目标目录 /data/up1 并在那里归档 index.html 页面。
其次,定义了代理服务器及其能够传送图像内容的功能。 这是通过使用 ProxyPass 指令执行的,包括主要服务器协议 (http)、名称 (localhost) 和端口 (8080) 的详细信息:
1
2
3
4
5
6
7
8
9 server {
location / {
proxy_pass http://localhost:8080;
}
location ~ \.(gif|jpg|png) $ {
root /data/images;
}
}
第二个位置块指示代理服务器通过从本地 /data/images 目录中检索相应的内容来回答所有请求,如果它们的 URI 以典型的图像文件(如 .gif、.jpg 和 .png)结尾。 所有其他请求都转发到主服务器。 与之前的设置一样,通过将重新加载信号保存到主进程或通过重新启动 nginx 来保存图像代理。
还没有评论,来说两句吧...