美文网首页
nginx的25个常用命令

nginx的25个常用命令

作者: 風崋 | 来源:发表于2020-07-28 01:00 被阅读0次

    在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

    相关文章

      网友评论

          本文标题:nginx的25个常用命令

          本文链接:https://www.haomeiwen.com/subject/rmdxrktx.html