如何在 CentOS 7 上安装 Nginx

Nginx 的发音是 “engine x”, 是一个免费的,开源的,高性能的 HTTP 和反向代理服务器。互联网上一些很大的站点都使用 Nginx 来负载。

Nginx 的可以被用作一个独立的 Web 服务器,并可作为 Apache 的和其它的 web 服务器的反向代理。

与 Apache 相比,Nginx 可以处理大量并发连接,并且每个连接的内存占用量更小。

本教程将教您如何在 CentOS 7 机器上安装和管理Nginx。

先决条件

在开始本教程之前,请确保以具有 sudo 权限的用户身份登录,并且您没有在端口 80 或 443 上运行 Apache 或任何其他服务。

在 CentOS 上安装 Nginx

按照以下步骤在 CentOS 服务器上安装 Nginx:

EPEL 存储库中提供了 Nginx 包。如果您尚未安装 EPEL 存储库,则可以键入以下命令:

sudo yum install epel-release

键入以下 yum 命令安装 Nginx:

sudo yum install nginx

如果这是您第一次从 EPEL 存储库安装软件包,yum 可能会提示您导入 EPEL GPG 密钥:

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <[email protected]>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-9.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]:

如果是这种情况,请输入y并点击Enter。

安装完成后,启用并启动 Nginx 服务:

sudo systemctl enable nginx
sudo systemctl start nginx

使用以下命令检查Nginx服务的状态:

sudo systemctl status nginx

输出应该如下所示:

● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2018-03-12 16:12:48 UTC; 2s ago
Process: 1677 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 1675 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 1673 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 1680 (nginx)
CGroup: /system.slice/nginx.service
├─1680 nginx: master process /usr/sbin/nginx
└─1681 nginx: worker process

如果您的服务器受防火墙保护,则需要打开HTTP(80)和HTTPS(443)端口。

使用以下命令打开必要的端口:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

要验证您的 Nginx 安装,请 http://YOUR_IP 在您选择的浏览器中打开,您将看到默认的 Nginx 欢迎页面,如下图所示:

使用 systemctl 管理 Nginx 服务

您可以像管理任何其他 systemd 单元一样管理 Nginx 服务。

要停止 Nginx 服务,请运行:

sudo systemctl stop nginx

要再次启动它,请键入:

sudo systemctl start nginx

要重新启动Nginx服务:

sudo systemctl restart nginx

完成一些配置更改后重新加载 Nginx 服务:

sudo systemctl reload nginx

如果要禁用 Nginx 服务随系统自启动:

sudo systemctl disable nginx

如果要启用 Nginx 服务随系统自启动:

sudo systemctl enable nginx

Nginx 配置文件的结构和最佳实践

  • 所有 Nginx 配置文件都位于 /etc/nginx/ 目录中。
  • 主要的 Nginx 配置文件是 /etc/nginx/nginx.conf
  • 为了使 Nginx 配置更易于维护,建议为每个域创建单独的配置文件。
  • 新的 Nginx 服务器块文件必须以 .conf 结尾并存储在目录 /etc/nginx/conf.d 中。您可以根据需要建立尽可能多的服务器块。
  • 遵循标准命名约定是个好主意,例如,您的域名是 mydomain.com 那么您的配置文件应该被命名 /etc/nginx/conf.d/mydomain.com.conf
  • 如果在域服务器块中使用可重复的配置段,则最好创建一个名为 /etc/nginx/snippets 的目录来整理存放这些片段,并将片段文件包含到服务器块中。
  • Nginx日志文件 (access.logerror.log) 位于 /var/log/nginx/ 目录中。建议每个服务器模块都有不同 accesserror 日志文件。
  • 您可以将域文档根目录设置为任何位置。webroot 最常见的位置包括:
    • /home/<user_name>/<site_name>
    • /var/www/<site_name>
    • /var/www/html/<site_name>
    • /opt/<site_name>
    • /usr/share/nginx/html

结论

恭喜,您已在 CentOS 7 服务器上成功安装了 Nginx 。您现在已准备好开始部署应用程序并将 Nginx 用作Web或代理服务器。如果您打算在 CentOS 服务器上托管多个域,您应该学习如何创建 Nginx 服务器块。

安全证书是当今所有网站的“必备”功能。如果要使用免费的 Let’s Encrypt SSL 证书来保护您的网站,您可以查看我们的教程,了解如何在 CentOS 7 上使用 Let’s Encrypt 来保护 Nginx