Linux中,nginx网站服务

nginx服务基础

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

nginx1.12安装及运行控制

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

编译安装nginx

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

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

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

为了使 Nginx 服务器的运行更加方便,可以为主程序 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 服务是否正常运行。

主程序 Nginx 支持标准的进程信号,通过 kil 或 killal 命令发送 HUP 信号表示重载配置,QUIT 信号表示退出进程,KILL信号表示杀死进程。例如,若使用kilall命令,重载配置、停止服务的操作分别如下所示(通过“-s"选项指定信号种类)。

当 Nginx 进程运行时,PID 号默认存放在logs/目录下的 nginx.pid 文件中,因此若改用kil 命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制。
(3)添加Nginx 系统服务
为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写 Nginx 服务脚本,并使用 chkconfig 和 systemct 工具来进行管理,也更加符合 CentOS7.3 系统的管理习惯

配置文件nginx.conf

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

全局配置

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

上述配置中,worker_processes 表示工作进程的数量。如果服务器有多块 CPU 或者使用多核处理器,可以参考CPU核心总数来指定工作进程数。如果网站访问量需求并不大,一般设为1就够用了。其他三项配置均已有注释,表示采用默认设置,例如,Nginx的运行用户实际是编译时指定的 nginx,若编译时未指定则默认为nobody。

I/O时间配置

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

若工作进程数为8,每个进程处理 4096个连接,则允许 Nginx 正常提供服务的连接数已超过3万个(4096x8=32768),当然具体还要看服务器硬件、网络带宽等物理条件的性能表现。

http配置

使用“http {}"界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包含在子界定标记“server {}”内。

上述配置中,listen 语句允许同时限定 IP 地址,采用“IP 地址:端口"形式。root 语句用来设置特定访问位置(如“location/"表示根目录)的网页文档路径,默认为 Nginx 安装目录下的 html/子目录,根据需要可改为/var/www/html等其他路径。

访问状态统计

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 配置代码。

新的配置生效以后,在浏览器中访问 Nginx 服务器的/status 网站位置,可以看到当前的状态统计信息,如图 5.1所示。其中,“Active connections"表示当前的活动连接数(4);而“server accepts handled requests"表示已经处理的连接信息,三个数字依次表示已处理的连接数(4)、成功的TCP 握手次数(4)、已处理的请求数(3)。

nginx访问控制

基于授权的访问控制

基于授权的访问控制简介

Nginx 与 Apahce 一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与Apache 基本一致。
概括为以下几个步骤。
生成用户密码认证文件。
修改主配置文件相对应目录,添加认证配置项。
重启服务,访问测试。

基于授权的访问控制步骤

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

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

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

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

(5)用浏览器访问网址,检验控制效果,如图5.2所示。需要输入用户名和密码进行访问,验证通过才能访问到页面。

基于客户端的访问控制

基于客户端的访问控制简介

基于客户端的访问控制是通过客户端IP地址,决定是否允许对页面访问。Nginx 基于客户端的访问控制要比 Apache 简单,规则如下:
deny IP/IP 段:拒绝某个|P 或IP 段的客户端访问。
allow IP/IP 段:允许某个 |P 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

基于客户端的访问控制步骤

修改主配置文件nginx.conf添加相应的配置项

Deny 192.168.9.207 表示这个|P地址访问会被拒绝,其他 IP 客户端正常访问。
(2)重启服务器访问网址,页面已经访问不到,如图5.3所示。

nginx虚拟主机

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx 服务器或单独运行一组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功能。跟 Apache 一样,Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
使用 Nginx 搭建虚拟主机服务器时,每个虚拟 Web 站点拥有独立的"server{}”配置段,各自监听的IP 地址、端口号可以单独指定,当然网站名称也是不同的。

基于域名的虚拟主机

(1)修改Windows 客户机的C:WindowslSystem32\driversletchosts 文件,加入www.bt.com 和 www.test.com 这两个域名,它们都指向同一个服务器 |P 地址,用于实现不同的域名访问不同的虚拟主机。

准备各个网站的目录和测试首页

3)修改配置文件,把配置文件中的 server{}代码段全部去掉,加入 2个新的 server{}段,对应2个域名。

(3)分别访问2个域名,如图5.4、5.5所示,查看是否访问到不同的页面,测试配置是否成功。

基于IP的虚拟主机

(1)一台主机如果有多个|P 地址,可以设置每一个 !P 对应一个站点。主机安装多个网卡可以有多个IP,这里采用虚拟IP的方式使主机有多个IP。

(2)以/var/www/htmltestcom 和/var/www/html/btcom 为两个站点的根目录,修改 Nginx的配置文件,使基于!P的虚拟主机生效。这里省略了和基于域名虚拟主机的相同配置代码。

3)分别访问2个IP 地址,如图 5.6、5.7 所示,查看是否访问到不同的页面,测试配置是否成功。

基于端口的虚拟主机

(1)选择系统中不使用的端口,多个端口映射到同一IP地址。

2、检测端口是否运行正常

3)分别访问2个端口地址,如图5.8、5.9所示,查看是否访问到不同的页面,测试配置是否成功。

LNMP架构部署及应用

众所周知,LAMP 平台是目前应用最为广泛的网站服务器架构,其中“A"对应着 Web 服务软件 Apache。随着 Nginx在企业中的使用越来越多,LNMP(或LEMP)架构也越来越受到企业的青睐。

构建LNMP网站平台

安装MySQL服务

为了与Nginx、php环境保持一致,仍选择采用源码安装方式安装MySQL组件。以5.6.36版本为例,安装过程如下所述。
(1)编译安装 MySQL 服务。

2)复制配置文件到/etc下,并把MySQL添加到服务:

3)初始化数据库

(3)启动 mysql,并设置密码

安装php解析环境

新版本的 PHP(如 5.5 版本)已经自带FPM(FastCGlProcess Manager,FastCG进程管理器)模块,用来对 PHP 解析实例进行管理、优化解析效率。单服务器的LNMP 架构通常使用这种方式,因此在配置 PHP 编译选项时应添加"--enable-fpm"以启用此模块。以源码包 PHP-5.5.38 为例,具体安装过程如下。为了提高 PHP 解析效率,建议将相应版本的 ZendGuardLoader也装上
(1)编译安装 PHP

2、安装后调整

3)安装ZendGuardLoader

配置nginx支持PHP环境

若要让 Nginx 能够解析 PHP 网页,有两种方法可以选择:其一,充当中介,将访问 PHP页面的 Web 请求转交给其他服务器(LAMP)去处理;其二,通过使用 PHP 的FPM 模块来调用本机的 PHP 环境。
(1)启用 php-fpm 进程
如果选用 fpm 方式,则需要先启动 php-fpm 进程,以便监听 php 解析请求。参考范例建立 php-fpm.conf配置文件,并修改其中的 PID 文件、运行用户、服务数(进程数量)等相关设置,然后启动 php-fpm 程序即可(默认监听本机的 9000 端口)。

在 php-fpm.conf 文件中,pid 配置行指出了 PID 信息的存放位置,对应的实际路径为/usr/localiphp5/var/runphp-fpm.pid。根据上述信息,可以修改 Nginx 服务脚本,以便启动/停止 Nginx 服务器时将 php-fpm 进程也自动启停。

因此,一旦启动或关闭 Nginx服务,php-fpm 程序也会随之启动或关闭。
(2)配置 Nginx 支持 PHP 解析无论是将 PHP 页面交给 LAMP 服务去解析,还是调用本机的 php-fpm 进程进行解析,都需要在“"server{}"配置段中添加 location 设置,以便指定当访问.php 页面时采取何种操作。对于第一种方法(转给其他 Web 服务器处理),使用的配置语句如下所示。例如,交给 IP 地址为 192.168.1.22 的 LAMP 服务器处理,从而实现由 Nginx 负责处理静态页面,LAMP 负贵动态页面的分离效果。

上述方法中,选用任何一种都可以,本章中建议使用第二种。完成修改以后,重新加载Nginx 服务即可生效。
(3)PHP 页面访问测试
以调用 php-fpm 解析为例,可以在 PHP 文档根目录下创建一个测试页面,用以测试PHP 语句能否正常解析,以及能否连接 MySQL 数据库。

访问测试页面,如 http:/kwww.bt.com/test.php,若能看到如图 5.1 所示的连接成功的提示信息,则表示 PHP 解析及数据库连接均正常。反之,需根据页面提示信息、日志消息等进行排查,排除相应故障。

在lnmp平台中部署web应用

LNMP 平台与 LAMP 平台是非常相似的,区别主要在于所用 Web 服务软件的不同。而这与使用 PHP 开发的 Web 应用程序并无太大关系,因此 PHP 应用部署方法也是类似的。下面将以“Discuz!社区论坛”为例,介绍在LNMP 平台中的部署过程。

1.下载并部署程序代码
Discuz!社区论坛,是一个采用PHP 与 mysql等多种数据库构建的性能优异,功能全面且安全稳定的社区论坛(BBS)软件,其官方网站为www.discuz.net。
将下载的 Discuz 源码文件解压,找到其中的 upload 文件夹并将其放置到 LNMP 服务器的网站根目录,然后适当调整权限(若此处不调整,也可以参考安装页面的提示再调整),以允许 Nginx、php-fpm 程序拥有必要的写入权限。

2.创建数据库
Discuz 论坛中的帖子、板块等信息需要保存在数据库中,所以要针对 Discuz 创建数据库。为了降低 Web 应用程序对数据库的风险,建议设置专用的数据库及授权用户,而不要直接使用 root用户。例如,可以新建 bbs 库、授权用户为runbbs,操作如下所示。

3.安装 Web 应用
访问服务器 URL地址,将会打开 Discuz的安装程序,根据页面提示,只需要三部即可轻松完成安装如图 5.1所示

确保系统环境、目前权限、缓存可写性等检测通过,否则安装将无法继续。在第三步配置安装数据库的步骤中,除了应正确配置连接数据库外,还应该设置好管理账号、密码等信息,如图 5.2所示。完成安装后,删除install 目录,以降低安全风险。

访间 Web 应用系统
完成安装后,通过访问 http://192.168.9.237/bbs/forum.php,可以看到 Discuz 社区论坛站点首页,如图 5.3 所示;通过访问 http://192.168.9.237/bbs/admin.php 并以管理员账号登录后,可以进入管理后台,如图5.4所示。

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值