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.mzph.cn/news/624487.shtml

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

相关文章

vscode中关于python的一些常用配置

文章目录 python cv2 提示配置第一步 配置提示信息第二部 重启vs 可能还不行&#xff0c;那就重新安装以下opencv-python 配置pytest还是如上&#xff0c;将下入的位置打开编写测试用例 配置跨文件import在工作目录中新建一个.env文件输入内容如下打开.vscode中的setting.json …

目标识别跟踪模块Tofu3

Tofu系列提供了适应不同目标、不同速率的识别跟踪模块产品系列&#xff0c;主要包括Tofu3&#xff0c;4&#xff0c;5&#xff0c;S和其他零配件&#xff0c;可以适配BT.656,Cameralink&#xff0c;网络等不同接口和协议的热红外、可见光视频。 Tofu3 是多波段视频物体识别跟踪…

GL Logger和CANFDLog-OTL-128两款记录仪都是如何实现高效的报文录制的?

GL Logger是Vector推出的记录CAN/CAN FD、LIN、FlexRay和MOST数据通信的工具。以GL2400为例带着大家一步步地实现路试过程中通过整车OBD口进行CAN/CANFD报文的录制。 Step1 设备配置 设备配置即设备录制方式、录制内容、设备休眠唤醒策略等。 ▷ 打开Vector Logger Configurat…

UML-用例图

提示&#xff1a;用例图是软件建模的开始&#xff0c;软件建模中的其他图形都将以用例图为依据。用例图列举了系统所需要实现的所有功能&#xff0c;除了用于软件开发的需求分析阶段&#xff0c;也可用于软件的系统测试阶段。 UML-用例图 一、用例图的基础知识1.用例图的构成元…

使用numpy处理图片——滤镜

大纲 3维数组切分打平重组法深度切分法 3维数组堆叠 我们在用手机拍照片时&#xff0c;往往会对照片进行滤镜处理&#xff0c;从而让照片更加美观。本文我们将实现几种滤镜效果——去除所有像素中的某一种原色&#xff0c;形成只有红绿、红蓝和绿蓝原色的照片。 为了突出色彩丰…

定制服务器有什么优势优点?

定制服务器是指在根据用户的需求和业务特点&#xff0c;专门设计和制造的服务器。与标准服务器相比&#xff0c;定制服务器具有以下优势和优点&#xff1a; 更好的性能&#xff1a;定制服务器可以针对特定应用进行优化&#xff0c;从而提高服务器的性能。由于定制服务器不需要…

Win和Mac系统重置系统方法

注意&#xff1a;重置系统前&#xff0c;请备份好系统盘资料到其他盘符&#xff01;重置系统将会删除应用和系统设置&#xff0c;甚至用户文件&#xff0c;还原为出厂设置模式。 Windows重置系统操作方法。&#xff08;目前支持WIN8&#xff0c;WIN10&#xff0c;WIN11&#x…

Linux系统使用docker部署Geoserver(简单粗暴,复制即用)

1、拉取镜像 docker pull kartoza/geoserver:2.20.32、创建数据挂载目录 # 统一管理Docker容器的数据文件,geoserver mkdir -p /mydata/geoserver# 创建geoserver的挂载数据目录 mkdir -p /mydata/geoserver/data_dir# 创建geoserver的挂载数据目录&#xff0c;存放shp数据 m…

【数据库原理】(24)数据库安全性策略

数据库安全性是数据库管理系统&#xff08;DBMS&#xff09;中一个至关重要的方面。它指的是保护数据库免受非授权访问和恶意操作&#xff0c;包括数据泄露、修改、破坏等。 多层安全模型 在典型的计算机系统安全模型中&#xff0c;安全措施被设置在不同层级&#xff1a; 应用…

Unity ComputeShader 使用GPU快速计算复杂问题

Unity ComputeShader 使用GPU快速计算复杂问题 前言项目创建ComputeShader编写CompturShader创建Unity代码场景布置运行场景 参考 前言 遇到一个问题&#xff0c;需要大量的计算&#xff0c;在Unity中直接写会长时间的阻塞主线程&#xff0c;正好使用ComputeShader让GPU来帮我…

海格里斯HEGERLS仓储货架生产厂家|载荷1.5T运行速度1.7~2m/s的智能四向穿梭车系统

四向穿梭车立体库是近年来出现的一种智能型密集系统&#xff0c;通过使用四向穿梭车在货架的水平和纵向轨道上运行来搬运货物&#xff0c;一台四向穿梭车就能完成货物的搬运工作&#xff0c;大大提高了工作效率。同时配合提升机、自动化仓库管理系统(WMS)和仓库调度系统(WCS)&a…

使用WAF防御网络上的隐蔽威胁之SSRF攻击

服务器端请求伪造&#xff08;SSRF&#xff09;攻击是一种常见的网络安全威胁&#xff0c;它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造&#xff08;CSRF&#xff09;相比&#xff0c;SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它&#xff0…

手写OpenFeign(简易版)

Remoting组件实现 1. 前言2. 原理说明3. 远程调用组件实现---自定义注解3.1 添加Spring依赖3.2 编写EnableRemoting注解3.3 编写RemoteClient注解3.4 编写GetMapping注解 4. 远程调用组件实现---生成代理类4.1 编写自定义BeanDefinition注册器4.2 编写自定义包扫描器4.3 编写Fa…

JVM初识

什么是JVM&#xff1f; JVM全称是Java Virtual Machine&#xff0c;中文译名Java虚拟机。 JVM本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 JVM的功能 jvm的功能主要分为三部分&#xff1a; 解释和运行 对字节码文件中的指令&#xff0c;实…

vue实现导出+ 样式修改

1.安装插件 npm xlsx-style ^0.18.5 npm install xlsx -S ^0.8.13 2. 修改代码 node_modules里面找到 以下位置xlsx.js 搜索 write_ws_xml_data 替换成以下代码 function write_ws_xml_data(ws, opts, idx, wb) {var o [], r [], range safe_decode_range(ws[!ref]…

搭建储能监控云平台:实现能源管理的智能化

搭建储能监控云平台&#xff1a;实现能源管理的智能化 在全球能源变革的大背景下&#xff0c;储能技术的重要性日益凸显。储能监控云平台作为能源管理的智能解决方案&#xff0c;可以为企业提供全方位的储能系统监控与数据分析&#xff0c;提高能源利用率&#xff0c;降低能源成…

QFN封装对国产双轴半自动划片机的性能有哪些要求?

1. 高精度切割&#xff1a;QFN封装要求芯片的尺寸和形状误差要尽可能小&#xff0c;因此对国产双轴半自动划片机的切割精度提出了高要求。高精度的切割能够提高封装的良品率和稳定性。 2. 快速和稳定&#xff1a;QFN封装生产需要快速、稳定的生产过程&#xff0c;因此对国产双轴…

Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

Jenkins部署完毕&#xff0c;如果不安装插件的话&#xff0c;那它就是一个光杆司令&#xff0c;啥事也做不了&#xff01; 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI/CD必要插件。 但是问题来了&#xff0c;jenkins下载插件速度非常慢&#xff0c…

XTuner 大模型单卡低成本微调实战

XTuner 大模型单卡低成本微调实战 Finetune简介增量预训练微调指令跟随微调LoRA XTuner介绍功能亮点 8GB显存玩转LLMFlash AttentionDeepSpeed ZeRO 上手操作平台激活环境微调 参考教程&#xff1a;XTuner Finetune简介 LLM的下游应用任务中&#xff0c;增量预训练和指令跟随…

卓越协同,数字化运维:智能工单系统助力企业解决派单难题-亿发

不少企业的I运维部门在管理制度上存在架构混乱、分工不明、流程不透明等问题&#xff0c;导致部门内部和合作服务商之间的协作常常呈现出“踢皮球”的状态。因此&#xff0c;有效的企业运维协同管理显得尤为关键。然而&#xff0c;如果内部的协同流程设计不合理&#xff0c;过多…