linux泡妞大法之Nginx网站服务

技能目标

学会 Nginx 网站服务的基本构建

了解 Nginx 访问控制实现的方法

掌握 Nginx 部署虚拟主机的方法

学会 LNMP 架构部署及应用的方法

在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件------Nginx ,由俄罗斯的 Igor Sysoev 开发,其稳定、高效的特性逐渐被越来越 多的用户认可。本章将讲解 Nginx 服务的基本构建、访问控制方式、虚拟主机的搭建,还有应用广泛的 LNMP 架构服务器的部署方式,并对 PHP_FPM 模块如何支持 PHP 语言进行讨论

5.1 Nginx服务基础

Nginx(发音为 [engine x] )专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对 HTTP 并发连接的高处理能力(单台物理服务器可支持 30000 ~ 50000 个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供 Web 服务。

本节将介绍 Nginx 的安装配置方法。

5.1.1 Nginx 1.12安装及运行控制

Nginx 安装文件可以从官方网站 http://www.nginx.org/ 下载。下面以稳定版 Nginx1.12.0 为例,介绍 Nginx 的安装和运行控制。

1.编译安装Nginx

(1)安装支持软件

Nginx 的配置及运行需要 pcre 、 zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel ),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成。

(2)创建运行用户、组

Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为 nginx 的用户,不建 立宿主文件夹,也禁止登录到 Shell 环境。

(3)编译安装 Nginx

配置Nginx 的编译选项时,将安装目录设为 /usr/local/nginx ,运行用户和组均设为 nginx ;启用 http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可参考"./configure --help" 给出的说明。

为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员直接执行"nginx" 命令就可以调用 Nginx 的主程序。

(1)检查配置文件

与 Apache 的主程序 httpd 类似, Nginx 的主程序也提供了 "-t" 选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件 nginx.conf 默认位于安装目录下的 conf/ 子目录中。若要检查位于其他位置的配置文件,可使用"-c" 选项来指定路径。

(2)启动、停止 Nginx

直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用 其他配置文件,需添加"-c 配置文件路径 " 选项来指定路径。需要注意的是,若服务器中已装 第 有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。

通过检查 Nginx 程序的监听状态,或者在浏览器中访问此 Web 服务(默认页面将显示 "Welcome to nginx!"),可以确认 Nginx 服务是否正常运行。

(3)添加 Nginx 系统服务

为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写 Nginx 服务脚本,并使用 chkconfig 和 systemctl 工具来进行管理,也更加符合 CentOS7.6 系统的管理习惯。

5.1.2 配置文件nginx.conf

在 Nginx 服务器的主配置文件 /usr/local/nginx/conf/nginx.conf 中,包括全局配置、 I/O事件配置和 HTTP 配置这三大块内容,配置语句的格式为 " 关键字 值 ;" (末尾以分号表示结束),以"#" 开始的部分表示注释。

1. 全局配置

由各种配置语句组成,不使用特定的界定标记。全局配置部分包括 Nginx 服务的运行用户、工作进程数、错误日志、PID 存放位置等基本设置。

  1. I/O事件配置

使用"events { }" 界定标记,用来指定 Nginx 进程的 I/O 响应模型、每个进程的连接数等设置。对于 2.6 及以上版本的内核,建议使用 epoll 模型以提高性能;每个进程的连接数应根据实际需要来定,一般在 10000 以下(默认为 1024 )。

5.1.3 访问状态统计

Nginx 内置了 HTTP_STUB_STATUS 状态统计模块,用来反馈当前的 Web 访问情况。配置编译参数时可添加--with-http_stub_status_module 来启用此模块支持,可以使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块。

要使用 Nginx 的状态统计功能,除了启用内建模块以外,还需要修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置代码。

  1. 基于授权的访问控制步骤

(1 )使用 htpasswd 生成用户认证文件,如果没有该命令,可使用 yum 安装 httpd-tools 软件包,用法与 Apache 认证时方式相同,如: htpasswd -c /usr/local/nginx/passwd.db test。 在/usr/local/nginx/ 目录下生成了 passwd.db 文件,用户名是 test, 密码输入 2 次。在 passwd.db 中生成用户和密码的密文。

2 )修改密码文件权限为 400 ,将所有者改为 nginx ,设置 Nginx 的运行用户能够读取。

3 )修改主配置文件 nginx.conf, 添加相应认证配置项。

(4)检测语法、重启服务。

2.基于客户端的访问控制步骤
(1)修改主配置文件 nginx.conf,添加相应配置项。
相关推荐
尤达c22 分钟前
Jenkins on Mesos 高可用高并发部署
运维·ci/cd·devops
GuokLiu6 小时前
250708-Debian系统安装Edge浏览器并配置最小中文输入法
运维·edge·debian
Two_brushes.6 小时前
【linux 网络】网络基础
linux·网络
Code Warrior6 小时前
【Linux】基础开发工具(3)
linux·服务器
鬼才血脉7 小时前
Linux(centos)安装 MySQL 8
linux·mysql·centos
guygg887 小时前
ubuntu手动编译VTK9.3 Generating qmltypes file 失败
linux·运维·ubuntu
JeffersonZU7 小时前
Linux/Unix 套接字Socket编程(socket基本概念,流程,流式/数据报socket,Unix domain socket示例)
linux·c语言·tcp/ip·udp·unix·gnu
先做个垃圾出来………8 小时前
自动化一次通过率
运维·自动化
Two_brushes.8 小时前
【linux网络】网络编程全流程详解:从套接字基础到 UDP/TCP 通信实战
linux·开发语言·网络·tcp/udp
夕泠爱吃糖9 小时前
Linux中的静态库和动态库
linux·运维·服务器