返回介绍

12.4 nginx 简介

发布于 2024-01-21 17:11:03 字数 4300 浏览 0 评论 0 收藏 0

nginx(Engine X)1 是 Nginx Inc. 开发的 Web 服务器,拥有 HTTP 服务器、代理服务器等功能,轻量级且速度快。

1 http://nginx.org/

近年来 nginx 成长迅速,在 Web 服务器界占有的份额仅次于 Apache、IIS(Internet Information Services),居世界第三(约 14%)。一些较大规模的 Web 服务也采用了 nginx,比如 WordPress.com2 、GitHub3 、Instagram4 等。

2 https://wordpress.com/

3 https://github.com/

4 http://instagram.com

12.4.1 安装 nginx

nginx 的安装可以直接从源码构建,不过由于 Ubuntu 的版本库中有相关程序包,所以我们用 apt-get 命令进行安装(LIST 12.8)。

LIST 12.8 安装 nginx

$ sudo apt-get install nginx

本书使用了 nginx 的 1.4.6 版本(LIST 12.9)。

LIST 12.9 查看版本

$ nginx -v
nginx version: nginx/1.4.6 (Ubuntu)

启动、停止等操作通过 service 命令实现(LIST 12.10 ~ LIST 12.13)。

LIST 12.10 启动 nginx

$ sudo service nginx start

LIST 12.11 停止 nginx

$ sudo service nginx stop

LIST 12.12 重启 nginx

$ sudo service nginx restart

LIST 12.13 重载 nginx

$ sudo service nginx reload

测试设置文件是否有错时,执行配置测试(ConfigTest)(LIST 12.14)。

LIST 12.14 nginx 的配置测试

$ sudo nginx -t

12.4.2 检测nginx 的性能

前面我们检测了留言板应用的性能,现在我们看看 Web 服务器 nginx 本身的性能如何。

由于要运行默认站点,所以这里我们先用管理员权限编辑设置文件 /etc/nginx/sites-available/default(LIST 12.15)。如果 Apache 等已安装的软件已经占用了端口 80,则需要将 listen 后的端口号修改成其他数值。

LIST 12.15 /etc/nginx/sites-available/default

server {
  listen   80;  # 使用端口80
  server_name  localhost;  # 主机名为localhost
  # 访问日志的文件路径
  access_log  /var/log/nginx/localhost.access.log;
  location / {  # 域名后的路径为/ 时
    root   /var/www;  # 根目录
    index  index.html index.htm;  # 索引文件的文件名
  }
}

这里不存在已设置好的根目录 /var/www 时,需要手动创建(LIST 12.16)。

LIST 12.16 创建 /var/www 目录

$ sudo mkdir /var/www
$ sudo chown www-data:www-data /var/www

用管理员权限生成用于默认站点的目录(LIST 12.17)。

LIST 12.17 /var/www/index.html

<html>
  <head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <title> 测试页面</title>
  </head>
  <body>
  <h1> 测试页面</h1>
  </body>
</html>

另外,有时候我们会遇到工作进程数默认为 1 的情况,所以要根据 CPU 数(核心数)修改 /etc/nginx/nginx.conf 的 worker_processes。这里我们设置为 2(LIST 12.18)。

LIST 12.18 /etc/nginx/nginx.conf

user www-data;
worker_processes 2;
# 下略

编辑完成后执行配置测试,确认没有问题后重载或重启 nginx(LIST 12.19)。

LIST 12.19 nginx 的配置测试与重载

$ sudo nginx -t
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
$ sudo service nginx reload
* Reloading nginx configuration nginx               [ OK ]

接下来用 ApacheBench 评估性能(LIST 12.20)。

LIST 12.20 执行 ab 命令

$ ab -n 1000 -c 100 http://127.0.0.1/

评估结果如下。

Server Software:    nginx/1.4.6
Server Hostname:    127.0.0.1
Server Port:      80
Document Path:      /
Document Length:    194 bytes
Concurrency Level:    100
Time taken for tests:   0.214 seconds
Complete requests:    1000
Failed requests:    0
Write errors:       0
Total transferred:    404000 bytes
HTML transferred:     194000 bytes
Requests per second:  4662.92 [#/sec] (mean)
Time per request:     21.446 [ms] (mean)
Time per request:     0.214 [ms] (mean, across all concurrent requests)
Transfer rate:      1839.67 [Kbytes/sec] received
Connection Times (ms)
        min  mean[+/-sd] median   max
Connect:    0  9   2.7   10    11
Processing:   1   12   3.8   11    26
Waiting:    1   10   4.1    9    25
Total:     11   21   2.9   21    29
Percentage of the requests served within a certain time (ms)
  50%   21
  66%   21
  75%   21
  80%   21
  90%   23
  95%   26
  98%   28
  99%   29
 100%   29 (longest request)

与 gunicorn 上运行的留言板相比,响应速度快出了一个层级。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文