Linux -- Nginx服务基础

4.1Nginx服务基础

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

4.1.1安装及运行控制

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

1.编译安装Nginx

1)安装支持软件

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

[root@node01 ~]# yum -y install pcre-devel zlib-devel

2)创建运行用户、组

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

[root@node01 ~]# useradd -M -s /sbin/nologin nginx

3)编译安装Nginx

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

[root@node01 ~]# tar zxf nginx-1.12.0.tar.gz 
[root@node01 ~]# cd nginx-1.12.0/
[root@node01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@node01 nginx-1.12.0]# make
[root@node01 nginx-1.12.0]# make install

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

[root@node01 nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@node01 nginx-1.12.0]# ls -l /usr/local/sbin/nginx 

2.Nginx的运行控制

1)检查配置文件

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

[root@node01 nginx-1.12.0]# nginx -t

2)启动、停止Nginx

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

[root@node01 nginx-1.12.0]# nginx 

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

[root@node01 nginx-1.12.0]# netstat -anpt | grep nginx[root@node01 nginx-1.12.0]# yum -y install elinks

       主程序Nginx支持标准的进程信号,通过kill或killall命令发送HUP信号表示重载配置,QUIT信 号表示退出进程,KILL信号表示杀死进程.例如,若使用killall命令,重载配置、停止服务的操作分 别如下所示(通过“-s”选项指定信号种类),最小化安装的centos 系统默认没有安装killall 命令, 需要先通过yum安装

[root@node01 ~]# yum -y install psmisc  //安装killall命令
[root@node01 ~]# killall -s HUP nginx   //选项-S HUP 等同于 -1
[root@node01 ~]# killall -s QUIT nginx  //选项-s QUIT 等同于 -3

       当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令, 也可以根据nginx.pid文件中的PID号来进行控制。

3)使用Nginx服务脚本

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

[root@node01 ~]# vim /etc/init.d/nginx#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" instart)$PROG;;stop)kill -s QUIT $(cat $PIDF);;restart)$0 stop$0 start;;reload)kill -s HUP $(cat $PIDF);;*)echo "Usage: $0 {start|stop|restart|reload}"exit 1esacexit 0[root@node01 ~]# chmod +x /etc/init.d/nginx 
[root@node01 ~]# chkconfig --add nginx
[root@node01 ~]# systemctl status nginx

       这样,就可以通过systemctl命令控制Nginx脚本来启动、停止、重启、重载Nginx服务器了,方法是在执行时添加相应的start、stop、restart、reload参数。

4.1.2配置文件nginx.conf

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

1.全局配置

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

[root@node01 ~]# vim /usr/local/nginx/conf/nginx.conf#user  nobody;                        //运行用户
worker_processes  1;                  //工作进程数量
#error_log  logs/error.log;           //错误日记文件的位置
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;           //PID文件的位置

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

events {use epoll;                  //使用epoll模型,需自行添加worker_connections  4096;  //每进程处理4096个连接
}

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

3.HTTP配置

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

http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                 '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;              //访问日志位置sendfile        on;                              //开启高效传输文件模式#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;                           //连接保持超时#gzip  on;server {                                         //Web服务的监听配置listen       80;                             //监听地址及端口server_name  www.bdqn.com;                   //网站名称(FGDN)    charset utf-8;                               //网页的默认字符集#access_log  logs/host.access.log  main;location / {                                  //根目录配置root   html;                              //网站根目录的位置index  index.html index.php;              //默认首页(索引页)}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html #error_page   500 502 503 504  /50x.html;        //内部错误的反馈页面location = /50x.html {                          //错误页面配置root   html;}

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

4.1.3 访问状态统计及虚拟主机应用

1.Nginx的访问状态统计

       Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,配置编译参数时可添加--with-http_stub_status_module来启用此模块。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf 配置文件,指定访问位置并打开 stub_status 配置。

[root@node01 ~]# vim /usr/local/nginx/conf/nginx.conf以下内容需自行添加location /status {           //访问位置为/statusstub_status on;   //打开状态统计功能access_log off;   //关闭此位置的日志记录}[root@node01 ~]# systemctl restart nginx

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

2.基于城名的虚拟Web主机

       基于域名的虚拟Web主机通过域名区分不同的Web站点,使用Nginx搭建虚拟主机服务器时, 每个虚拟Web站点拥有独立的“server { }”配置段,各自监听的P地址,端口号可以单独指定,当 然网站名称也是不同的。例如,若要在一台Linux 服务器上部署两个站点www.bdqn.com 和 www.accp.com,可以参考以下过程。

(1)配置DNS服务,使两个域名解析为同一IP地址(在另一台虚拟机上操作)。

[root@web ~]# vim /etc/hosts

(2)准备网站目录及测试文件。为两个虚拟Web主机分别建立根目录,并准备测试首页,以方便在测试时区分。

[root@node01 ~]# mkdir -p /var/www/bdqn
[root@node01 ~]# echo "<h1>WWW.BDQN.COM</h1>" > /var/www/bdqn/index.html
[root@node01 ~]# mkdir -p /var/www/accp
[root@node01 ~]# echo "<h1>WWW.ACCP.COM</h1>" > /var/www/accp/index.html

(3)调整nginx.conf 配置文件。配置两个“server { }”区域,分别对应两个Web站点,指定各自的网站名称、监听地址、网站根目录、访问日志等信息,然后重载配置。

[root@node01 ~]# vim /usr/local/nginx/conf/nginx.confserver {listen       80;server_name  www.bdqn.com;charset utf-8;#access_log  logs/bdqn.access.log  main;location / {root   /var/www/bdqn;index  index.html index.php;}}server {listen       80;server_name  www.accp.com;charset utf-8;#access_log  logs/accp.access.log  main;location / {root   /var/www/accp;index  index.html index.php;}[root@node01 ~]# systemctl reload nginx

(4)访问虚拟Web主机。一台与Web主机同网段的客户机(系统为Windows 10)测试 Web 站点是否配置成功。在客户机的浏览器中分别访问两个站点:www.bdqn.com和www.accp.com,若能看到各自的测试首页内容,就表示虚拟Web主机配置成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/238312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

振弦采集仪在隧道工程监测中的应用与效果评估

振弦采集仪在隧道工程监测中的应用与效果评估 振弦采集仪在隧道工程监测中起到了重要的作用&#xff0c;主要用于对隧道结构的振动进行监测和分析。通过测量振弦的振动频率和振幅&#xff0c;可以评估隧道结构的稳定性和安全性。 振弦采集仪的应用主要体现在以下几个方面&…

edge 指纹浏览,多账号

1.需求来源&#xff1a; 登录多个推特账号来测试 2.方法&#xff1a; 2.1 多个手机 pass 2.2 浏览器 --- 源于chrom浏览器多账号的应用 3.指纹浏览器可以实现&#xff0c;那么win11自带浏览器呢 看图&#xff1a;​​​​​​​ 新建个人资料后会打开新的浏览器--》可以不用账号…

python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(-代码)

Python是一种功能强大的编程语言&#xff0c;它提供了许多库和工具&#xff0c;用于处理和可视化数据。在本文中&#xff0c;我们将介绍使用Python绘制热力图&#xff0c;并对VOC数据集中的类别标签进行分布及数量统计。 首先&#xff0c;我们需要导入所需的库。使用numpy库来…

新书速览|Spring Boot+Vue.js企业级管理系统实战

教你用Spring BootVue.js构建完整企业级管理系统项目 本书内容 《Spring BootVue.js企业级管理系统实战》以一个完整的全栈微服务项目为主线&#xff0c;详细阐述项目的技术架构、开发流程和技术要点&#xff0c;包括Vue.js前端技术、Spring Boot后端技术和Spring Cloud Alibab…

文件模块常用api

文件模块常用api 文件夹常用操作 文件夹操作 fs.mkdir fs.rmdir 需要是空目录 题目&#xff1a;递归删除目录* 串行/并行删除文件*

用二维码介绍产品详情,扫码查看图文并茂的宣传册

传统的产品宣传方式&#xff0c;往往以产品手册、宣传单等纸质物料为主&#xff0c;更新成本高昂&#xff0c;一旦修改内容&#xff0c;就必须重新印刷&#xff0c;而且不易携带和保存&#xff0c;影响宣传效果和客户体验。 为了避免上述问题&#xff0c;可以在草料上搭建产品…

soft212期末

文章目录 安卓填空题选择题 C# 安卓 Dalvik中得到Dx工具会把部分class文件转换成dex文件。 如果希望在XML布局文件中调用颜色资源&#xff0c;可以使用color调用 Android程序入口的Activity是在AndroidManifest.xml文件中注册的 Android中查看应用程序日志的工具是LogCat Dal…

Making Large Language Models Perform Better in Knowledge Graph Completion

Making Large Language Models Perform Better in Knowledge Graph Completion 基本信息 博客贡献人 鲁智深 作者 Yichi Zhang, Zhuo Chen, Wen Zhang, Huajun Chen 隶属于浙江大学计算机学院和软件学院 摘要 本文主要探讨了如何将有用的知识图谱结构信息融入大语言模型中…

哪种护眼灯对眼睛好?五款高品质考研台灯推荐

眼睛是我们感知世界的窗户&#xff0c;眼睛对光的敏感度非常高。长时间接触强光或不适宜的光线环境可能会对眼睛造成伤害。因此&#xff0c;选择一款适合自己的护眼台灯非常重要。护眼台灯能够模拟自然光的光谱&#xff0c;减少眼睛对不良光线的伤害。它具备调节光线亮度&#…

springCould中的Stream-从小白开始【12】

&#x1f95a;今日鸡汤&#x1f95a; 见过一些人&#xff0c;他们朝九晚五&#x1f62d;&#xff0c;有时也要加班&#xff0c;却能把生活过得很&#x1f60e;有趣。他们有自己的爱好&#xff0c;不怕独处。他们有自己的坚持&#xff0c;哪怕没人在乎。&#x1f926;‍♂️ 开心…

RISC-V Bytes: Caller and Callee Saved Registers

原文链接1&#xff1a;https://danielmangum.com/posts/risc-v-bytes-caller-callee-registers/ 原文链接2&#xff1a;https://zhuanlan.zhihu.com/p/77663680 //主要讲栈帧 原文链接3&#xff1a;https://www.jianshu.com/p/b666213cdd8a //主要讲栈帧 This is part of a new…

MySQL面试题 | 08.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

AArch64 memory management学习(二)

提示 该博客主要为个人学习&#xff0c;通过阅读官网手册整理而来&#xff08;个人觉得阅读官网的英文文档非常有助于理解各个IP特性&#xff09;。若有不对之处请参考参考文档&#xff0c;以官网文档为准。AArch64 memory management学习一共分为两章&#xff0c;这是第二章。…

实战 | 某电商平台类目SKU数获取与可视化展示

一、项目背景 最近又及年底&#xff0c;各类分析与规划报告纷至沓来&#xff0c;于是接到了公司平台类目商品增长方向的分析需求&#xff0c;其中需要结合外部电商平台做对比。我选择了国内某电商平台作为比较对象&#xff0c;通过获取最细层级前台类目下的SKU数以及结构占比&…

Java网络爬虫--HttpClient

目录标题 技术介绍有什么优点&#xff1f;怎么在项目中引入&#xff1f; 请求URLEntityUtils 类GET请求带参数的GET请求POST请求 总结 技术介绍 HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、功能丰富的、支持 HTTP 协议的客户端编程工具包。相…

八分钟了解一致性算法 -- Raft算法

前言 #### 分布式一致性在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性。 #### 分布式一致性算法比较常见的一致性算法包括Paxos算法,Raft算法,ZAB算法等• Paxos是Leslie Lamport提出的一种基于消息传递的分布式一致性算法。很多分布式一致性算法都由…

机器学习根据金标准标记数据-九五小庞

根据金标准标记数据是一种在机器学习和数据科学中常见的操作&#xff0c;主要用于评估分类模型的性能。其基本步骤如下&#xff1a; 收集数据&#xff1a;首先需要收集相关领域的原始数据&#xff0c;这些数据通常来自不同的来源和渠道。数据清洗和预处理&#xff1a;在这一步…

什么是Modbus协议?

Modbus协议是一种在工业自动化领域广泛应用的通信协议&#xff0c;它允许不同设备之间进行可靠的数据交换和控制。该协议最初由Modicon公司于1979年创建&#xff0c;旨在提供一种简单而有效的方法&#xff0c;使PLC&#xff08;可编程逻辑控制器&#xff09;和其他自动化设备能…

四搭建dockerhub私有仓库

搭建dockerhub私有仓库 很多场景下&#xff0c;我们需使用私有仓库管理Docker镜像。相比Docker Hub&#xff0c;私有仓库有以下优势&#xff1a; 节省带宽&#xff0c;对于私有仓库中已有的镜像&#xff0c;无需从Docker Hub下载&#xff0c;只需从私有仓库中下载即可&#x…

Vue学习笔记五--路由

1、什么是路由 2、VueRouter 2、1VueRouter介绍 2、2使用步骤 2、3路由封装 3、router-link 3.1两个类名 3.2声明式导航传参 4、路由重定向、404 当找不到路由时&#xff0c;跳转配置到404页面 5、路由模式 6、通过代码跳转路由---编程式导航&传参 路由跳转时传参 跳转方式…