nginx的25个常用命令

在Linux中安装Nginx Web 服务器

Nginx提供了几种用于不同版本Linux的安装软件包。可以使用软件包管理器直接安装Nginx,如下所示。

$ sudo apt install nginx                                # Ubuntu

$ sudo dnf install nginx                                # Fedora

$ sudo yum install epel-release && yum install nginx    # RHEL 或 CentOS

也可以从源代码编译Nginx。

1、启动Nginx服务器

如下所示,启动Nginx Web服务器非常容易。只需使用以下命令之一来调用标准Web服务器。

sudo service nginx start

发出此命令时,Nginx正在由System V初始化脚本启动。如果您是从基于系统的系统(如Ubuntu Linux 16.04LTS及更高版本)运行Nginx,则需要使用以下命令。

sudo systemctl start nginx

您应该得到一个响应,显示服务器是否成功启动。另一个简单但有效的方法是使用二进制路径直接调用Nginx,如下所示。

sudo /usr/bin/nginx

2、停止Nginx服务器

您也可以使用上面显示的类似方法停止正在运行的Nginx服务器。但是,请记住,当停止正在运行的Nginx服务器时,与之关联的所有系统进程都会被杀死。即使您有活动的连接,它也会终止。

sudo service nginx stop

该命令将在使用System V初始化脚本的系统中停止Nginx进程。对于基于systemd的计算机,可以使用以下命令。

sudo systemctl stop nginx

但是,在繁忙的服务器中,这些命令仍会花费大量时间。下一条命令演示如何以更快的方式停止Nginx服务。

sudo killall -9 nginx

3、退出Nginx服务器

退出Nginx服务器类似于停止服务器-唯一的区别是。Nginx守护程序采用了一种优雅的方法来退出,因为它不会中断任何活动的连接。因此,您的客户请求将在关闭之前按预期的方式提供。

sudo service nginx quit

使用此命令从Linux shell退出Nginx服务器。运行基于Systemd的计算机的用户可以利用下一个命令来完成此工作。

sudo systemctl quit nginx

您也可以使用以下Nginx命令之一退出正在运行的服务器。

sudo nginx -s quit

sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4、重新启动Nginx服务器

重新启动服务器时,Nginx进程只是停止然后重新启动。您可以使用以下命令之一从命令行重新启动Nginx守护程序。

sudo service nginx restart

此命令将使用System V初始化脚本重新启动Nginx服务器。您可以在新的Ubuntu版本(例如较新的Ubuntu)等基于系统的系统中使用systemctl进行此操作。

sudo systemctl restart nginx

您也可以用其他方式执行此操作,如以下示例所示。

sudo /etc/init.d/nginx restart

如果从源代码编译了Nginx,则可以使用下一个命令。

sudo /usr/local/nginx/sbin/nginx -s restart

5.重新加载Nginx服务器

重新加载Nginx服务器与重新启动服务器略有不同。重新加载服务器时,Nginx将以正常方式关闭。这意味着Nginx守护程序将首先终止,然后解析配置文件以进行尝试的更改,并在不中断操作的情况下启动新的工作进程。

sudo service nginx reload

sudo systemctl status nginx

第一个命令使用System V初始化脚本,而最后一个命令用于基于systemd的Linux发行版。您也可以调用以下脚本来完成此工作。

sudo /etc/init.d/nginx reload

如果您已从源代码编译了Nginx,则应使用下一个命令。

sudo /usr/local/nginx/sbin/nginx -s reload

下一个命令是正常重启Nginx服务器的另一种便捷方法。

sudo nginx -s reload

6、检查Nginx状态

有时,您可能需要先查看Nginx服务器的当前状态,然后再对其进行任何操作。使用以下命令之一可以非常快速地完成此操作。切记对您的命令进行sudo或切换到root用户。

sudo service nginx status

如先前的一些命令所示,此命令通过初始化System V初始化脚本来起作用。您可以对使用systemd的系统使用next命令。

systemctl status nginx

执行此操作的另一种方法是直接使用Nginx init.d脚本,如以下命令所示。

sudo /etc/init.d/nginx status

如果Nginx是从源代码编译的,则您需要执行下一个命令。

sudo /usr/local/nginx/sbin/nginx -s status

7、检查Nginx配置

由于Nginx的自定义功能范围很广,因此网络管理员经常需要调整配置文件以添加/解锁新功能。但是,您应该始终测试配置文件中是否存在潜在错误。否则,恶意用户可能会利用服务器配置中的错误。

sudo nginx -t

这是一个简单的命令,可以为您完成这项工作。运行此命令时,基本上是在告诉Nginx检查配置文件中的语法错误,并避免运行服务器。您可以使用以下命令在终端控制台上转储配置测试的结果。

sudo nginx -T

您也可以使用以下Nginx命令之一来测试Nginx服务器的配置。

sudo service nginx configtest  # System V Init

sudo systemctl config nginx    # systemd-based

8、送信号给Nginx

管理员可以向Nginx守护程序发送各种有用的信号。您将需要使用-s标志向Nginx发送信号,然后发送实际信号。当我们使用它退出并重新加载Nginx服务器时,我们已经看到了运行中的信号。在这里,我们按顺序指定它们。

$ sudo nginx -s stop    # 停止正在运行的Nginx服务器

$ sudo nginx -s quit    # 退出Nginx服务器

$ sudo nginx -s reload  # 正常重启Nginx

$ sudo nginx -s reopen  # 重新打开服务器日志文件

但是,您的Nginx版本至少应为0.7.53或更高。否则,您将无法向Nginx进程发送信号。

9、显示Nginx版本信息

Nginx的某些较新功能仅适用于最新版本。因此,管理员可能会在旧版服务器上遇到一些兼容性问题。您可以轻松确定您的Nginx版本,以查看您的问题是否与服务器版本有关。

[linuxidc@localhost ~/www.linuxidc.com]$nginx -v

nginx version: nginx/1.14.1

以下命令可用于显示有关Nginx安装的其他信息,例如配置变量和编译器版本。

[linuxidc@localhost ~/www.linuxidc.com]$sudo service nginx -V

service ver. 1.1

sudo systemctl -V nginx

另外,如果您正在运行基于Ubuntu或Debian的Linux服务器,则可以使用以下命令查找您的Nginx版本。

sudo apt-cache policy nginx

10、显示帮助页面

Nginx帮助页面对于初学者和经验丰富的Linux管理员都是一个很好的参考点。您可以使用以下Nginx命令之一从Linux终端仿真器查看此参考。

sudo service nginx -h  #System V Init使用

[linuxidc@localhost ~/www.linuxidc.com]$systemctl -h nginx #用于基于systemd的发行版

参考帮助页面始终是一个很好的选择,因为它们可以让您快速了解用户可用的选项。

11、使用替代配置

Nginx Web服务器提供了无止境的自定义功能列表。管理员可以轻松地调整Nginx配置文件,以向其服务器添加其他功能。大多数系统上的默认Nginx配置文件是/etc/nginx/nginx.conf。但是,通常最好先在其他配置文件上实现自定义。

sudo nginx -c ~/linuxidc.conf

请注意,我们假设您的新配置文件名为test.conf。用您的配置文件的实际名称替换这部分。现在,您可以使用以下命令测试新配置。

sudo nginx -t -c ~/linuxidc.conf

您也可以指示Nginx在从源代码进行编译时在其他目录中查找默认配置。在配置安装时只需传递此目录即可。

./configure --conf-path=/etc/some/other/nginx.conf

12、禁止显示非错误消息

测试新配置时,通常会收到错误消息。但是,在检查自定义项时,您还将获得很多不相关的信息。幸运的是,Nginx守护程序提供了一个简单的选项来抑制这些非错误消息,如下所示。

sudo nginx -q -t -c ~/linuxidc.conf

此命令将测试一个名为linuxidc.conf的自定义配置文件,并将忽略输出中不必要的信息。这对于远程服务器管理任务非常有用。

13、变更全局指令

全局指令包含Nginx服务器可用的所有配置参数。这是您的Web服务器最敏感的部分之一,需要认真注意。该-g选项允许管理员定义自己的Web服务器Nginx的个性化指令。

sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"

该命令为PID指定全局Nginx指令,并定义工作进程数,在这种情况下为2。现在,我们可以使用先前使用的备用配置文件对此进行测试。

sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"

14、更改Nginx前缀路径

前缀路径包含Nginx Web服务器使用的所有文件。它也是用于配置设置相对路径(库源除外)的目录。默认情况下,Nginx使用/usr/local/nginx目录作为前缀。下面的命令演示了如何从命令行覆盖它。

sudo nginx -p /path/to/new/prefix

该-p标志允许我们通过新的前缀的位置。在测试新服务器时,它通常会派上用场。但是,此选项不适用于版本低于0.7.53的Nginx服务器。

15、检查stub_status模块

该stub_status模块公开有关Nginx的一些非常重要的指标。管理员经常使用它来监视其Linux邮件服务器或代理服务器。尽管所有预构建的Nginx二进制文件都随该模块一起提供,但是如果您从源代码编译了Nginx,则您的Nginx服务器可能没有此二进制文件。您可以使用以下命令测试是否已安装。

sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module

如果发现缺少此模块,则始终可以从源代码重建Nginx。如下所示,在配置Nginx时只需包含–with-http_stub_status_module参数。

./configure --with-http_stub_status_module

16、检查Nginx路径

有几个Nginx命令可用于检查Nginx安装路径。就像日常的Linux终端命令一样,您始终可以使用which / whereis命令来检查Nginx路径。

[linuxidc@localhost ~/www.linuxidc.com]$which nginx

/usr/sbin/nginx

[linuxidc@localhost ~/www.linuxidc.com]$whereis nginx

nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx.8.gz

上面的命令将显示包含与Nginx设置相关的文件的所有系统位置。您可以通过使用ps命令并grepping所需信息来另一种方式。

[linuxidc@localhost ~/www.linuxidc.com]$ps aux | grep nginx

17、找到Nginx PID

PID或进程ID是唯一的数字,用于区分Linux和类Unix系统上的进程。我们可以使用适当的PID将各种信号发送到Nginx服务器。可以使用以下命令之一找到此PID。

[linuxidc@localhost ~/www.linuxidc.com]$ps aux | grep [n]ginx

root      3834  0.0  0.0 117740  2188 ?        Ss  05:01  0:00 nginx: master process /usr/sbin/nginx

nginx      3835  0.0  0.2 148772  7704 ?        S    05:01  0:00 nginx: worker process

[linuxidc@localhost ~/www.linuxidc.com]$pgrep nginx

3834

3835

[linuxidc@localhost ~/www.linuxidc.com]$cat /run/nginx.pid

3834

因此,我们可以将pgrep或vanilla grep命令与ps结合使用。如果您不了解“ grep”的工作原理,请不要担心。我们已经发布了有关Linux grep命令指南。《理解Linux中的pgrep命令 https://www.linuxidc.com/Linux/2020-02/162409.htm

18、查找日志文件

日志文件包含许多对系统管理员和开发人员而言有价值的信息。Nginx有两个默认的日志文件,由access.log和error.log文档组成。这些位于/var/log,可以使用以下命令查看。

[root@localhost /home/linuxidc/www.linuxidc.com]$ls /var/log/nginx/*.log

/var/log/nginx/access.log  /var/log/nginx/error.log

现在您应该看到上面提到的那些日志文件。顾名思义,access.log包含有关您的网站访问者的信息,而error.log包含有关错误配置的警告/详细信息。但是,您需要先从Nginx配置文件中启用这两个日志,然后才能使用它们。

19、设置虚拟主机

虚拟主机允许服务器管理员在一台服务器计算机上运行多个网站。这通常很有用,因为您可以共享您的计算过程以同时运行多个站点。但是,术语虚拟主机通常与Apache服务器关联。在Nginx世界中,它们被称为“ 服务器块 ”。

[linuxidc@localhost ~/www.linuxidc.com]$ sudo ln -s /etc/nginx/sites-available/linuxidc.com /etc/nginx/sites-enabled/linuxidc.com

您可以使用此简单的符号链接轻松地在Nginx服务器上启用虚拟主机。如果要禁用虚拟主机,只需删除符号链接。

20、查看编译的Nginx模块

正如您在以前的Nginx命令中看到的那样,在安装守护程序时,还会安装一些基本模块。我们可以使用以下命令轻松查看这些Nginx模块。

[linuxidc@localhost ~/www.linuxidc.com]$sudo 2>&1 nginx -V | tr -- - '\n' | grep _module

该命令利用了几个Linux命令行工具,并过滤掉了不相关的信息以仅显示模块。由于Nginx有很多模块,因此该命令对于检查为服务器编译了哪些模块很有用。

21、启用/禁用Nginx服务

启用Nginx服务可以使服务器在启动期间自动启动。这对于专用服务器至关重要,因为否则,用户请求可能会中断。我们可以使用以下命令轻松地使Nginx自动启动。

[linuxidc@localhost ~/www.linuxidc.com]$sudo service nginx enable# System V Init

[linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl enable nginx  # 基于systemd系统

这些简单但有效的命令将确保尽可能减少服务器停机时间。您也可以根据需要禁用自动启动。只需使用以下命令之一。

[linuxidc@localhost ~/www.linuxidc.com]$sudo update-rc.d -f nginx disable

[linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl disable nginx

22、即时升级Nginx

Nginx允许管理员即时升级二进制文件和/或配置文件。这意味着您的客户端请求不会由于服务器升级而中断。为此,首先,我们需要找到主Nginx进程的PID。我们可以使用已经演示过的简单命令来实现。

[linuxidc@localhost ~/www.linuxidc.com]$cat /run/nginx.pid

新的Nginx二进制文件应该已经准备就绪。通过以下命令生成一组新的Nginx主/工作进程,这些进程使用新的二进制文件。

[linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s USR2 `cat /run/nginx.pid`

现在,使用以下命令杀死第一个主进程使用的辅助进程。

[linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s WINCH `cat /run/nginx.pid.oldbin`

通过杀死旧的主进程来跟踪它。

[linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23、在Chroot Jail中设置Nginx

Nginx服务器的Chroot Jail将在可能发生入侵的情况下提供额外的安全保护。管理员经常使用这种技术来确保其服务器在Linux文件系统的一小部分中是隔离的和安全的。使用以下命令在Chroot Jail中设置Nginx服务器。

# D=/nginx

# mkdir -p $D

# mkdir -p $D/etc

# mkdir -p $D/dev

# mkdir -p $D/var

# mkdir -p $D/usr

# mkdir -p $D/usr/local/nginx

# mkdir -p $D/tmp

# chmod 1777 $D/tmp

# mkdir -p $D/var/tmp

# chmod 1777 $D/var/tmp

# mkdir -p $D/lib64

# ls -l /dev/{null,random,urandom}

# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx

您需要以超级用户身份运行它们。现在,使用以下命令找出共享库。

# ldd /usr/local/nginx/sbin/nginx

如下所示,一一复制所有库。

# cp /lib64/libpcre.so.0 $D/lib64

您还需要复制/ etc和其他一些目录。

# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc

# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc

您的Chroot Jail现在已准备好接受Nginx。只需杀死旧服务,然后使用下一条命令启动新服务即可。

# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24、在Docker中运行Nginx

Docker容器由于其灵活性和强大的性能而变得非常流行。您可以从Docker容器中轻松创建和运行Nginx Web服务器。下一条命令将提取官方Nginx映像,并使用默认配置创建服务器实例。

[root@localhost /home/linuxidc/www.linuxidc.com]$docker run --name nginx-server -P -d nginx

Unable to find image 'nginx:latest' locally

latest: Pulling from library/nginx

123275d6e508: Pull complete

6cd6a943ce27: Pull complete

a50b5ac4a7fb: Pull complete

Digest: sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28

Status: Downloaded newer image for nginx:latest

b235541342e380c9e57aad547d52292da89e2c26d9cf6a1548d568a4073136ed

您可以使用以下简单命令维护持久性存储。

sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

25、在LXD内运行Nginx

LXD被誉为下一代Linux容器,并提供了一系列惊人的功能。您还可以通过LXD容器使用Nginx。看一下以下用于LXD的Nginx命令。

$ sudo lxc launch Ubuntu:18.04 nginx-server

$ sudo lxc exec nginx-server -- sudo --user ubuntu --login

$ sudo apt update

$ sudo apt install -y nginx

$ sudo systemctl reload nginx

首先,我们创建了一个名为nginx-server的容器,然后在该容器中启动了一个shell。然后,我们更新了软件包列表,并在该容器中安装了Nginx Web服务器。最后一条命令只是重新加载服务器。

转自:https://www.linuxidc.com/search.aspx?where=nkey&keyword=65544

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349