Nginx完全指南(一):安装Nginx

97 阅读5分钟

一、安装Nginx

1.1 通过YUM软件包管理器安装Nginx

如果想在Red Hat Enterprise Linux(RHEL)、Oracle Linux、AlmaLinux、Rocky Linux 或CentOS上安装Linux开源版。

步骤

1、创建一个名为/etc/yum.repos.d/nginx.repo的文件,其中包含以下内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
2、修改文件,将URL中间的OS替换成rhel或centos,具体取决你的发行版本,然后执行以下命令:
$ yum -y install nginx
$ systemctl enable nginx
$ systemctl start nginx

# 非云服务器,需要通过命令开放80端口
$ firewall-cmd --permanent --zone=public --add-port=80/tcp
$ firewall-cmd reload

如果使用的是云服务器,需要放开80端口。

详解

刚创建的文件,将指示YUM软件包管理系统使用官方NGINX开源版软件包仓库。后面的命令将从官方仓库安装NGINX开源版,指示systemd再启动时启用NGINX,并告知它将其立即启动。如有必要,防火墙命令为传输控制协议(TCP)打开端口80,这是HTTP的默认端口。最后一个命令重新加载防火墙,以提交变更。

1.2 验证安装

验证命令

你可以通过以下命令验证NGINX是否安装成功,并检查其版本:

$ nginx -v 
ngixn version: nginx/1.25.3

如本例所示,该响应显示了其版本。 你可以使用以下命令确认NGINX是否正在运行:

$ ps -ef | grep nginx
root      346664       1  0 Jan09 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     346665  346664  0 Jan09 ?        00:00:00 nginx: worker process

ps 命令列出了正在运行的进程。通过该命令导入到grep中,你可以在输出中搜索特定词。此示例使用grep搜索nginx。结果显示有两个正在运行的进程:master和worker进程。请注意,master进程以root身份运行,因为默认情况下,NGINX只有使用最高权限才能正常运行。有关启动NGINX的说明,请参考以下实操指南。要了解如何将NGINX座位守护进行启动,请使用init.d或systemd方法。

要验证NGINX能否正确返回请求,请使用浏览器向您的机器发出请求或只用curl。发送请求时,请使用机器的IP地址或主机名。如果安装在本地,你可以使用localhost,如下所示

$ curl localhost

详解

nginx命令允许您与NGINX二进制文件交互以便检查版本、列出已安装的模块、测试配置以及向master进程发送信号。NGINX必须在运行时才能服务请求。ps命令是一种确定NGINX是否正在运行(作为守护进程或是前台进程)的可靠方法。NGINX默认提供的配置在端口80上运行静态站点HTTP服务器。为了测试这一默认站点,可以使用localhost向机器发送HTTP请求,并使用主机的IP或主机名。

1.3 关键文件、目录和命令

1、NGINX文件和目录

/etc/nginx

/etc/nginx/目录是NGINX服务器的默认配置根,你可以从中找到指示NGINX如何运行的配置文件。

/etc/nginx/nginx.conf

/etc/nginx/nginx.conf文件是NGINX守护进程使用的默认配置入口点。此配置文件能够为worker进程、调优、日志记录、动态模块的加载以及对其他NGINX配置文件的引用设置全局设置。在默认配置中,/etc/nginx/nginx.conf文件包括顶层http代码块,也就是上下文,它提供了下述目录中的所有配置文件。

/etc/nginx/conf.d/

/etc/nginx/conf.d/目录包含默认的HTTP服务器配置文件,其中以.conf结尾的文件都包含在/etc/nginx/nginx.conf文件的顶层http代码块中。最佳实践是利用include语句并以这种方式组织配置,从而保持配置文件的简洁。在某些软件包仓库中,此文件夹被命名为sites-enabled,配置文件链接到site-available文件夹;此惯例已不再使用。

/var/log/nginx/

/var/log/nginx/ 目录是NGINX的默认日志位置,你可以从中找到一个access.log文件和error.log文件。默认情况下,访问日志包含NGINX服务的每条请求的条目。如果启用了debug模块,则错误日志文件包含错误时间和调试信息。

2、NGINX命令

nginx -h 显示NGINX帮助菜单

nginx -v 显示NGINX版本

nginx -V 显示NGINX版本、build信息和配置参数,这些参数显示NGINX二进制文件中内置的模块

nginx -t 测试NGINX配置。

nginx -T 测试NGINX配置并将验证后的配置打印到屏幕上。此命令在寻求支持时很有用。

nginx -s signal -s 标记想NGINX master进程发送信号。你可以发送stop、quit、reload和reopen等信号。stop信号可立即停止NGINX进程。quit信号会在完成当前正在处理的请求后停止NGINX进程。reload信号可重新加载配置。reopen信号指示NGINX重新打开日志文件。

详解 在了解这些关键文件、目录和命令之后,就可以开始使用NGINX了。你可以运用这些知识更改默认配置文件,并使用nginx -t 命令测试你的更改。如果测试成功,你讲了解到如何使用nginx -s reload命令知识NGINX重新加载配置。

1.4 使用include简化配置

使用include指令管理配置

可以通过include指令来将配置按逻辑划分为模块化配置集。include指令用来引用配置文件、目录或掩码:

http{
    include conf.d/compression.conf;
    include ssl_config/*.conf
}

include 指令中只包含一个参数,它可以是文件的路径或是与许多文件匹配的掩码。该指令在任何上下文中都有效。

详解

通过使用include语句,你可以保持NGINX配置清晰简洁。你可以对配置进行逻辑分组,以避免配置文件达到数百行。你可以创建模块化配置文件,然后将这些文件添加到配置中的多个位置,无需复制配置。对于从业人员来说,最好将配置分组到不同文件中并使用include语句。

1.5 提供静态内容

使用以下NGINX配置示例覆盖位于 /etc/nginx/conf.d/default.conf的默认HTTP服务器配置:

server{
    listen 80 default_server;
    server_name www.example.com;
    
    location / {
        root /usr/share/nginx/html;
        # alias /usr/share/nginx/html;
        index index.html index.htm;
    
    }

}

详解

此配置通过HTTP在端口80上从目录 /usr/share/nginx/html/提供静态文件。第一行配置定义了一个新的server代码块,这定义了一个新的上下文,指定NGINX要侦听的内容。第二行指示NGINX侦听端口80,default_server参数指示NGINX使用此服务器作为端口80的默认上下文。listen指令也可以使用一系列端口。server_name指令定义了主机名或应定向到此服务器的请求的名称。如果配置没有将此上下文定义为default_server,那么只有当HTTP主机请求头与提供给server_name指令的值相匹配时,NGINX才会将请求定向到这台服务器。如果你还没有要使用的域名,则可以通过设置default_server上下文省略server_name指令。

location代码块根据URL中的路径定义配置。路径或域之后的部分URL被称为同一资源标识符(URI)。NGINX会将请求的NGINX关联到最匹配的location代码块。示例使用了/匹配所有请求。root指令向NGINX显示了为给定上下文提供内容时应在何处查找静态文件。在查找请求的文件时,请求的URI会附加到root指令的值。如果我们为location指令提供了URI前缀,那么除非我们使用alias执行(而非root)。否则该前缀将包含在附加路径中。最后,index指令为NGINX提供了一个默认文件或要检查的文件列表,以防止URI没有提供进一步的路径。