源码编译安装Nginx及网站服务配置

news/2024/5/9 22:28:36/文章来源:https://blog.csdn.net/WLDN997/article/details/125099724

文章目录

  • 一、Nginx概述
    • 1.1 Nginx概述
    • 1.2 Nginx和Apache的区别
    • 1.3Nginx和Apache的优缺点差异
    • 1.4Nginx的进程
  • 二、源码编译安装nginx服务
    • 2.1关闭防火墙,将nginx所需压缩包放入/opt目录下
    • 2.2安装依赖包
    • 2.3创建运行用户和组,便于管理
    • 2.4解压软件包,编译安装nginx
    • 2.5将nginx的操作指令放入环境变量PATH的目录下
    • 2.6检查、启动、重启、停止nginx服务
      • 2.6.1检查配置文件是否配置正确,并启动nginx服务
      • 2.6.2多种方式查看nginx的PID号
      • 2.6.3停止nginx服务
      • 2.6.4重新加载nginx服务
      • 2.6.5日志分割(移走原有日志,重新打开日志文件)
      • 2.6.6升级nginx服务
    • 2.7添加nginx系统服务
            • 方法一:
            • 方法二:
      • 2.8浏览器访问验证
  • 三、Nginx服务的主配置文件
    • 3.1全局块(全局配置)
    • 3.2events块(I/O事件配置)
      • 3.2.1查看Nginx支持的最大并发量(软件支持、系统支持、CPU性能):
            • 1、软件支持
            • 2、系统支持
            • 3、实际工作中还要进行压测,测试CPU性能能否支持这个最大并发量。
    • 3.3http块(HTTP配置)
      • 3.3.1全局server块
      • 3.3.2location块
  • 四、访问状态统计配置
    • 4.1查看nginx的安装模块,是否包含HTTP_STUB_STATUS模块
    • 4.2修改nginx.conf配置文件,指定访问位置并添加stub_status配置
    • 4.3重启服务,访问测试
  • 五、基于授权的访问控制(只有)
    • 5.1 生成用户密码认证文件
    • 5.2 修改主配置文件和相对应的目录,添加认证配置项
    • 5.3 重启服务,访问测试

一、Nginx概述

1.1 Nginx概述

Nginx:

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求。

Apache

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

1.2 Nginx和Apache的区别

在这里插入图片描述

Apache:
创建多个进程或线程,而每个进程或线程都会为其分配cpu和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会榨干服务器资源。

Nginx:

采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx 支持更高的并发。

1.3Nginx和Apache的优缺点差异

(1)nginx相对于apache的优点∶

轻量级,同样起web服务,比apache占用更少的内存及资源

抗并发,nginx处理请求是异步非阻塞的,而apache是阻塞型的在高并发下,nginx能保持低资源低消耗高性能

高度模块化的设计,编写模块相对简

支持热部署,平滑升级

(2)apache相对于nginx的优点∶

Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)

模块多,基本想到的都可以找到

少bug, nginx的bug相对较多

超稳定

Nginx处理动态请求是弱项,动态请求要Apache去做。

总结:一般来说,需要性能的web服务,用Nginx. 如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。

1.4Nginx的进程

Apache和Nginx的默认端口都是80,如果其中一个已经启动了,那么再启动另一个会报错。如果想要同时使用,可以修改其中一个的端口号。

Nginx有两个进程:

master process:主进程(守护进程),用来管理工作进程。

worker process:工作进程,用来处理用户的请求。

二、源码编译安装nginx服务

2.1关闭防火墙,将nginx所需压缩包放入/opt目录下

 [root@yuji ~]# systemctl stop firewalld[root@yuji ~]# setenforce 0[root@yuji ~]# ls /opt/nginx-1.12.2.tar.gz  rh

在这里插入图片描述

2.2安装依赖包

nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

  [root@yuji ~]# yum install -y pcre-devel zlib-devel gcc gcc-c++ make​#各程序作用解释如下:gcc                     #C语言的编译器gcc-c++                 #C++的编译器make                    #源代码编译器(源代码转换成二进制文件)pcre-devel              #perl的接口开发包,提供正则表达式zlib-devel              #提供压缩功能

在这里插入图片描述

2.3创建运行用户和组,便于管理

nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限。

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

在这里插入图片描述

2.4解压软件包,编译安装nginx

   #解压软件包[root@yuji ~]# cd /opt[root@yuji opt]# lsnginx-1.12.2.tar.gz  rh[root@yuji opt]# tar zxf nginx-1.12.2.tar.gz[root@yuji opt]# lsnginx-1.12.2  nginx-1.12.2.tar.gz  rh​#切换到源码目录,运行configure脚本,指定安装路径和安装模块等。[root@yuji opt]# cd nginx-1.12.2/[root@yuji nginx-1.12.2]# ./configure \--prefix=/usr/local/nginx \       #指定nginx的安装路径--user=nginx \                    #指定用户名(运行用户)--group=nginx \                   #指定组名--with-http_stub_status_module    #启用http_stub_status_module模块以支持状态统计​#开2核同时编译,之后安装[root@yuji nginx-1.12.2]# make -j 2 && make install             

在这里插入图片描述

在这里插入图片描述

2.5将nginx的操作指令放入环境变量PATH的目录下

将nginx的可执行文件做个软链接,放入环境变量PATH的目录下,让系统识别nginx的操作指令。

  [root@yuji ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/    //让系统识别nginx的操作指令         

在这里插入图片描述

2.6检查、启动、重启、停止nginx服务

2.6.1检查配置文件是否配置正确,并启动nginx服务

   #检查配置文件是否配置正确[root@yuji ~]# nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful​#启动nginx服务[root@yuji ~]# nginx       

在这里插入图片描述

2.6.2多种方式查看nginx的PID号

logs目录下的文件nginx.pid,存放nginx的工作进程号。

nginx有两个进程:主进程和工作进程。

   [root@yuji ~]# cat /usr/local/nginx/logs/nginx.pid   //查看nginx主进程的PID69742[root@yuji ~]# pgrep nginx -l   //查看nginx的主进程号和工作进程号69742 nginx69743 nginx[root@yuji ~]# lsof -i :80    //查看nginx的主进程号和工作进程号[root@yuji ~]# ss -ntap | grep nginx  //查看nginx的主进程号和工作进程号[root@yuji ~]# netstat -ntap | grep nginx  //查看nginx主进程的PID 

在这里插入图片描述

在这里插入图片描述

2.6.3停止nginx服务

注意:nginx有主进程和工作进程,一定要杀死主进程(即父进程)。

    [root@yuji ~]# kill -3 69742    //通过主进程的PID号杀死nginx进程[root@yuji ~]# netstat -ntap | grep nginx   //此时已查不到进程​#杀死nginx进程的多种方式kill -3 <PID号>             //"kill -3"杀死进程时可以记录事故现场的信息(打印进程各个线程的堆栈信息)kill -s QUIT <PID号>killall -3 nginxkillall -3 QUIT <PID号>

在这里插入图片描述

2.6.4重新加载nginx服务

     [root@yuji ~]# nginx      //启动nginx服务[root@yuji ~]# cat /usr/local/nginx/logs/nginx.pid69919[root@yuji ~]# kill -1 69919        //重载nginx服务[root@yuji ~]# netstat -ntap | grep nginxtcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      69919/nginx: master[root@yuji ~]# kill -s HUP 69919    //重载nginx服务[root@yuji ~]# netstat -ntap | grep nginxtcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      69919/nginx: master​
​#重载nginx服务的多种方式kill -1 <PID号>kill -s HUP <PID号>killall -1 nginxkillall -s HUP <PID号>

在这里插入图片描述

2.6.5日志分割(移走原有日志,重新打开日志文件)

kill -USR1 <PID号>

   [root@yuji ~]# cd /usr/local/nginx/logs   //切换到日志目录[root@yuji logs]# lsaccess.log  error.log  nginx.pid[root@yuji logs]# mkdir log.bak[root@yuji logs]# mv *.log log.bak      //将原有日志移走[root@yuji logs]# lslog.bak  nginx.pid[root@yuji logs]# kill -USR1 69919       //重新生成日志文件[root@yuji logs]# lsaccess.log  error.log  log.bak  nginx.pid

在这里插入图片描述

2.6.6升级nginx服务

三种方式升级nginx服务:

    #平滑升级:kill -USR2 <PID号>​#新版本升级:tar zxvf nginx-XX.XX.tar.gz       #XX代表新版本号cd nginx-XX.XX./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module \--with-http_ssl_module​#重新编译:make                                            #重新编译mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx_old  #备份旧文件,方便回滚cp objs/nginx /usr/local/nginx/sbin/nginx             #将新的运行文件放入安装的运行目录make upgrade                                 #编译升级#或者先 killall -3 nginx ,再 /usr/local/nginx/sbin/nginx

2.7添加nginx系统服务

方法一:
 [root@yuji ~]# vim /etc/init.d/nginx#!/bin/bash#chkconfig: 35 99 20#description:This is nginx control scriptRUN="/usr/local/nginx/sbin/nginx"PID=`cat /usr/local/nginx/logs/nginx.pid`case "$1" instart)$RUN;;stop)kill -3 $PID;;restart)kill -3 $PID$RUN;;reload)kill -1 $PID;;*)echo "正确用法为:$0 {start|stop|restart|reload}"esac​[root@yuji ~]# chomod +x nginx          //给nginx赋予权限[root@yuji ~]# chkconfig --add nginx    //将nginx加入chkconfig[root@yuji ~]# chkconfig --list         //查看chkconfig列表[root@yuji ~]# service nginx start       //开启服务,或 systemctl start nginx [root@yuji ~]# ss -natp | grep nginx     //查看服务
方法二:

将nginx命令加入服务,编写/lib/systemd/system/nginx.service文件。

 [root@yuji ~]# cd /lib/systemd/system/[root@yuji system]# vim nginx.service[Unit]Description=nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target​[root@yuji system]# systemctl daemon-reload      //重载配置[root@yuji system]# systemctl start nginx        //启动服务[root@yuji system]# netstat -natp | grep nginx    //查看服务tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2154/nginx: master​#之后可以使用systemctl start|stop|restart|enable nginx 来管理服务

在这里插入图片描述

在这里插入图片描述

/lib/systemd/system/nginx.service文件注释:

 [Unit]           #服务的说明Description      #描述服务After            #依赖,当依赖的服务启动之后再启动自定义的服务​[Service]        #服务运行参数的设置Type=forking     #是后台运行的形式,使用此启动类型应同时指定PIDFile=         #以便systemd能够跟踪服务的主进程Execstart        #为服务的具体运行命令ExecReload       #为重启命令ExecStop         #为停止命令PrivateTmp=true    #表示给服务分配独立的临时空间#注意:启动、重启、停止命令全部要求使用绝对路径​[Install]        #服务安装的相关设置,指定运行级别,可设置为多用户(即字符界面)

至此,服务已安装完成。

2.8浏览器访问验证

使用浏览器输入本机IP地址,访问验证。

默认首页文件位置在 /usr/local/nginx/html/ 目录下。

 [root@yuji ~]# cd /usr/local/nginx/html    //首页文件默认存放在该目录下[root@yuji html]# ls                       //index.html是默认首页文件50x.html  index.html

在这里插入图片描述

在这里插入图片描述

三、Nginx服务的主配置文件

主配置文件位置:/usr/local/nginx/conf/nginx.conf

/usr/local/nginx/conf/ 目录下:

nginx.conf 是主配置文件
nginx.conf.default 是主配置文件的备份文件

主配置文件中有六个主要模块:

1、全局块:全局配置,对全局生效。

2、events块:配置影响Nginx服务器与用户的网络连接。

3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。

4、server块:配置虚拟主机的相关参数,一个http块中可以有多个server 块。每个 server 块就相当于一个虚拟主机。

5、location块:用于配置匹配的url,一个server块中可以有多个location块。

6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

3.1全局块(全局配置)

就是配置文件从头开始到 events 块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令。比如 worker_process,值越大,可以支持的并发处理量也越多,但是还是和服务器的硬件相关。

vim /usr/local/nginx/conf/nginx.conf

 #user  nobody;                  //运行用户,若编译时未指定则默认为nobody,若编译指定了用户则会写到二进制程序里变成默认配置。此前编译时指定了"--user=nginx",所以现在二进制程序中的运行用户为nginxworker_processes  1;            //工作进程数量,一般设置为和CPU核数一样#error_log  logs/error.log;     //错误日志文件的位置#pid  logs/nginx.pid;           //PID文件的位置

在这里插入图片描述

3.2events块(I/O事件配置)

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等。

 events  {use epoll;    #使用epoll模型。2.6及以上版本的系统内核,建议使用epo11模型以提高性能,实现I/O多路复用worker_connections  4096;  #每个工作进程处理4096个连接。默认值为1024。一般设置为2的次方}#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux 下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。​#如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是个文件句柄)。#可使用"ulimit -a"命令查看系统允许当前用户进程打开的文件数限制。

在这里插入图片描述

3.2.1查看Nginx支持的最大并发量(软件支持、系统支持、CPU性能):

例如现在CPU有两核,想要实现支持30000并发量 。

1、软件支持

软件配置支持多少并发量,由主配置文件nginx.conf决定:理论上支持的并发量=工作进程数量×每个工作进程处理的连接数。

将工作进程数设置为2(与CPU核数一致),每个工作进程处理15000个连接(一般设置为2的次方),那么软件支持的最大并发数量是30000个。

在这里插入图片描述

2、系统支持

系统会限制本地每个用户进程可以同时打开的最大文件数量,即系统会限制每个进程的连接数。

查看系统支持多少并发量:

使用"ulimit -a"可查看系统允许当前用户进程打开的文件数限制。

在这里插入图片描述

修改系统支持的最大并发量:

“ulimit -n 65535”命令可临时修改本地每个用户进程可以同时打开的最大文件数。

vim /etc/security/limits.conf,编辑该文件可永久修改。

在这里插入图片描述

 nginx          hard    nofile          30000​#第一列为用户和组#第二列为磁盘限额,软硬限制。hard表示硬限制。#第三列为项目。nofile表示最大可打开文件数量。#第四列为相应项目的数量
3、实际工作中还要进行压测,测试CPU性能能否支持这个最大并发量。

上述设置的软硬并发量都是理论上的,真正并发量还得看CPU的性能,在投放到生产环境前,我们需要进行压测 。

3.3http块(HTTP配置)

http块:包括 http 全局块,以及多个 server 块。

http 全局块: 配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块: 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。

 http {##文件扩展名与文件类型映射表includemime.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" "S$http_x_forwarded_for"' ;##访问日志位置#access_log logs/access.1og main;##开启文件传输模式sendfile  on;##减少网络报文段的数量#tcp_nopush  on;##连接保持超时时间,单位是秒#keepalive_timeout 0;keepalive_timeout 65;##gzip模块设置,设置是否开启gzip压缩输出#gzip  on;##Web服务的监听配置server {##监听地址及端口listen 80;##站点域名,可以有多个,用空格隔开server_name www.zzq.com;##网页的默认字符集charset utf-8;##根目录配置location / {##网站根目录的位置/usr/1ocal/nginx/htmlroot html ;##默认首页文件名index index.html index.php;}##内部错误的反馈页面error_page 500 502 503 504 /50x.html;##错误页面配置location = /50x.html {root html ;}}}------------------------------------------------日志格式设定:$remote_addr与$http_x_forwarded_for 用以记录客户端的ip地址。$remote_addr:记录上一个请求消息发送端的IP(代理服务器的IP)。$http_x_forwarded_for :会记录所有经过的服务器的IP地址。$remote_user:用来记录客户端用户名称。$time_local:用来记录访问时间与时区。$request:用来记录请求的url与http协议。$status:用来记录请求状态;成功是200。$body_bytes_sent:记录发送给客户端文件主体内容大小。$http_referer:用来记录从哪个页面链接访问过来的。$http_user_agent: 记录客户浏览器的相关信息。​通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

查看nginx支持的文件类型:

在这里插入图片描述

3.3.1全局server块

最常见的配置是本虚拟机主机的监听配置,和本虚拟主机的名称或 IP 配置。

 #监听地址及端口listen 80;​#站点域名,可以有多个,用空格隔开server_name www.zzq.com;

3.3.2location块

一个 server 块可以配置多个 location 块。
主要作用是根据请求地址路径的匹配,匹配成功进行特定的处理。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

location常见配置指令:root、alias、proxy_pass

root(根路径配置):root /var/www/html 请求www.zzq.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置,即虚拟路径):alias /var/www/html 请求www.zzq.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

根路径和虚拟路径:

示例1:

 location / {root html;    #表示此时根目录为/usr/local/nginx/html/index index.html index.htm;}​#此时访问路径和返回文件的关系为:http://192.168.192.15/index.html      --> /usr/loca/nginx/html/index.htmlhttp://192.168.192.15/test/index.html --> /usr/loca/nginx/html/test/index.html

示例2:

 location / {root html;    #表示此时根目录为/usr/local/nginx/html/index index.html index.htm;}​location /test {   root data;    #根目录,表示此时根目录为/data/index index.html index.htm;;} #此时 http://192.168.192.15/test/  匹配 /data/test/​#此时访问路径和返回文件的关系为:http://192.168.192.15/index.html      --> /usr/loca/nginx/html/index.htmlhttp://192.168.192.15/test/index.html --> /data/test/index.html

示例3:

 location / {root html;    #表示此时根目录为/usr/local/nginx/htmlindex index.html index.htm;}​location /test{alias /var/www/html;    #设置别名,即虚拟路径。别名是一个整体。  index index.html index.htm;}#此时 http://192.168.192.15/test/  匹配 /var/www/html/​#此时访问路径和返回文件的关系为:http://192.168.192.15/index.html      --> /usr/loca/nginx/html/index.htmlhttp://192.168.192.15/test/index.html --> /var/www/html/index.html

示例4:

为了更好地理解别名是一个整体,设置2个关于别名的location块。

 location / {alias /var/www/html;index index.html index.htm;}#此时 http://192.168.192.15/  匹配 /var/www/html/​location /test{alias /var/www/html;       index index.html index.htm;}#此时 http://192.168.192.15/test/  匹配 /var/www/html/​#此时访问路径和返回文件的关系为:http://192.168.192.15/index.html      --> /var/www/html/index.htmlhttp://192.168.192.15/test/index.html --> /var/www/html/index.htmlhttp://192.168.192.15/test/test/index.html --> /var/www/html/test/index.html

四、访问状态统计配置

4.1查看nginx的安装模块,是否包含HTTP_STUB_STATUS模块

先使用命令 /usr/local/nginx/sbin/nginx -V 查看已安装的nginx是否包含 HTTP_STUB_STATUS 模块。

 nginx -v    #查看nginx的版本。此前已将nginx的可执行文件放入PATH的目录中,所以可以直接使用nginx命令​nginx -V    #查看nginx的版本,以及编译安装时的配置参数​cat /opt/nginx-1.12.2/auto/options   #查看nginx已安装和未安装的模块,with表示已安装,without表示未安装​cat /opt/nginx-1.12.2/auto/options | grep "YES"   #查看nginx已安装的所有模块

查看版本和编译安装时的配置参数:

在这里插入图片描述

查看 /opt/nginx-1.12.2/auto/options 文件:

在这里插入图片描述

查看 HTTP_STUB_STATUS 模块是否已安装:

 [root@yuji conf]# cat /opt/nginx-1.12.2/auto/options | grep "HTTP_STUB_STATUS"HTTP_STUB_STATUS=NO       #此处NO表示该模块不是默认安装的--with-http_stub_status_module)  HTTP_STUB_STATUS=YES       ;;  #表示该模块已安装

在这里插入图片描述

4.2修改nginx.conf配置文件,指定访问位置并添加stub_status配置

 [root@yuji ~]# cd /usr/local/nginx/conf[root@yuji conf]# cp nginx.conf nginx.conf.bak    //备份原配置文件[root@yuji conf]# vim nginx.conf    //编辑配置文件..........http {..........server {listen   80;server_name   www.yuji.com;charset   utf-8;location / {root   html;index   index.html   index.php;}##添加 stub_status 配置location / status {         #访问位置为/statusstub_status   on;   #打开状态统计功能            access_log   off;   #关闭此位置的日志记录}}}

在这里插入图片描述

在这里插入图片描述

4.3重启服务,访问测试

 [root@yuji conf]# nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@yuji conf]# systemctl restart nginx

在这里插入图片描述

通过命令进行访问:

 [root@yuji conf]# curl -Ls http://192.168.192.15/status    Active connections: 1server accepts handled requests4 4 4Reading: 0 Writing: 1 Waiting: 0[root@yuji conf]# curl -Ls http://192.168.192.15/status|awk '/Active connections:/ {print $3}'1#Active connections:表示当前活动的连接数。#server accepts handled requests:表示当前已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。#Reading: Nginx 读取到客户端的Header信息数。#Writing: Nginx 返回给客户端的Header信息数。#Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接。

监控nginx当前并发数量:

可使用 curl -Ls http://192.168.192.15/status 结合awk与if语句进行性能监控。

 #!/bin/bash​CON=$(curl -Ls http://192.168.192.15/status | awk '/Active connections:/{print $3}')if[ $CON -gt 25000 ];thenecho "警告!当前并发数量为$CON,超过预警值!"

五、基于授权的访问控制(只有)

设置只有指定用户才可以访问该网页,想要对哪个路径进行限制,就在location下添加路径和认证配置。

5.1 生成用户密码认证文件

用户密码认证文件的文件名自拟。

但文件属主必须修改为nginx,文件权限必须设置为400。

 [root@yuji ~]# mount /dev/sr0 /mntmount: /dev/sr0 写保护,将以只读方式挂载[root@yuji ~]# yum install -y httpd-tools[root@yuji ~]# htpasswd -c /usr/local/nginx/passwd.db nancy   //文件名自拟。-c表示生成passwd.db文件,如果该文件已存在,则不需要加-cNew password:                    //密码自拟      Re-type new password:Adding password for user nancy[root@yuji ~]# chown nginx /usr/local/nginx/passwd.db  //文件属主必须修改为nginx,否则会报错[root@yuji ~]# chmod 400 /usr/local/nginx/passwd.db   //文件权限必须设置为400,否则会报错

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.2 修改主配置文件和相对应的目录,添加认证配置项

想要对哪个路径进行限制,就在对应的location块下添加认证配置项。

 [root@yuji ~]# vim /usr/local/nginx/conf/nginx.conf......server{location / {       root   html;index  index.html index.htm;##添加认证配置##auth_basic "secret";      #设置密码提示框文字信息auth_basic_user_file /usr/local/nginx/userlist.txt;  #指定密码验证文件}}

5.3 重启服务,访问测试

 [root@yuji ~]# nginx -t    //检查配置文件的配置项是否有误[root@yuji ~]# systemctl restart nginx   //重启服务​浏览器访问http://192.168.192.15

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

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

相关文章

程序员实用工具网站

目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力&#xff0c;为了备忘&#xff08;收藏夹真是满了&#x…

mouseover 和 mouseenter

不论鼠标指针穿过被选元素或其子元素&#xff0c;都会触发 mouseover 事件。 只有在鼠标指针穿过被选元素时&#xff0c;才会触发 mouseenter 事件。 <!Doctype html><head><script type"text/javascript" src"/jquery/jquery.js"><…

教会你如何在自己建立的网站上使用Mondrian和MDX语句对数据库查询

一个简单的Mondrian例子(部分参考某个大牛的文档~~)希望大家学到东西~ 可以详细参考豆丁网上的一个文档&#xff1a;http://www.docin.com/p-88928995.html 也可以跟我一起做~ 3.1 创建新的web项目 3.1.1 打开myEclipse,新建一个网站我的是这样的&#xff1a; 注意名字要按照…

网站建设的常识

1,整站DIVCSS步局&#xff0c;虽然写起来很痛苦&#xff0c;注意还要兼容FIERFOX浏览器 css: 1&#xff0c;通常用一个通用的CSS&#xff0c;每个页面都引用&#xff0c;公用的CSS全包含在里面&#xff0c;单个页面再做 一个CSS文件 2&#xff0c;背景图片&#xff0c;把页面用…

高并发高负载的网站架构

这一篇&#xff0c;主要是从技术的角度来阐述网站的架构和功能。在开始技术性的讨论之前&#xff0c;还要说一下前文没有解决的问题。第一是网站名字的问题&#xff0c;给网站取名字&#xff0c;确实很费了我的一番头脑&#xff0c;因为要做数码照片类的网站&#xff0c;又因为…

爬虫小试-将某网站内的试题爬取出来并保存到本地word

emmm&#xff0c;因为要刷作业的试题&#xff08;QWQ题目实在是太多了&#xff09;&#xff0c;在机缘巧合之下竟发现老师上传的题目全部是某网站上的&#xff0c;于是乎哈哈哈&#xff0c;爬下来做题库方便查询&#xff08;CtrlF&#xff09;&#xff0c;下面进入正题&#xf…

asp.net网站服务器搭建之从零开始

<script languagejavascript srchttp://www.shiqiaotou.com/donetk/Header.js></script> 一 IIS&#xff08;Internet Information Services&#xff09;安装: 1.选择"控制面板"。 2.点"添加或删除程序"。 3.选择"添加/删除Windows组…

优化网站性能 提高网站速度访问速度的14条实践

优化网站性能 提高网站速度访问速度的14条实践 西风坊 2009年01月07日17:57 查看 3380次 作者:yaosl 【 大 中 小】 文章分类&#xff1a; 前端交互 相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax&#xff0c;flex等等富客户端的应用使得人们越加“幸福”地体验着…

配色网站50个(转载)

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a; https://blog.csdn.net/weixin_45028175/article/details/90407778 50个国内外配色网站整理收集 (包括网站 插件 工具 ap…

yoowalk–web版3D网站浏览,太强了!

刚刚GOOGLE一下&#xff0c;在这里 看到了一个不错的Flex应用介绍&#xff1a; 记得大学的时候玩文字MUD&#xff0c;玩得不亦乐乎&#xff0c;而最近游戏界在狂炒Web游戏&#xff0c;各大游戏界巨头也纷纷投入巨资&#xff0c;希望依靠Web游戏重新对游戏巨头进行 排名刷新。现…

Day4 使用PolarDB和ECS搭建门户网站

Day4 使用PolarDB和ECS搭建门户网站 文章目录 Day4 使用PolarDB和ECS搭建门户网站背景知识实践配置PolarDB安装LAMP安装与配置PbootCMS重启服务验证完成 背景知识 PolarDB 阿里云自研100%兼容MySQL、100%兼容PostgreSQL、高度兼容Oracle语法集群架构&#xff0c;计算与存储分离…

thinkphp6 问题描述,网站在win环境没问题在Linux环境下点击提交,不会提交数据,或者根本无法点击提交

个人纪录&#xff1a; 框架&#xff1a;thinkphp6 开发环境&#xff1a;wnmp (小皮面板) 生产环境&#xff1a;lnmp (阿里云宝塔) 解决方案&#xff1a; php.ini修改 ; max_input_vars 10000

Centos7使用SimpleHttpServer快速搭建素材分享网站

背景 博主在日常的工作中&#xff0c;会经常使用到各种尺寸的图片素材或者视频素材&#xff0c;当然周边的同事也会用得到&#xff0c;所以自己想做一个素材的分享网站&#xff0c;就有点类似于镜像站的那种&#xff0c;博主的在linux 用的是python自带的web服务器SimpleHTTPS…

为Typecho博客网站评论框配置炫酷的打字效果跳动的彩球

缘起 我的个人主页,这次文章提到的的效果,也可以在个人主页的评论区查看效果 搭建这个博客虽然经历了很多坎坷,但还是挺兴奋了,用了点时间去美化他.逛了很多前辈的博客,在给他评论的时候看到他的评论框打字的时候竟然彩色的小球从文字上跳出来,删除的时候也有,主要是动画还比较…

读书札记:ASP.NET网站管理工具-遇到错误。请返回上一页并重试

在配置好了Web.config&#xff0c;打开项目→ASP.NET配置出现下面的错误。使用ASP.NET网站管理工具总是出现“遇到错误。请返回上一页并重试。” 我把这个项目放在其他的机子上使用此工具都是正常的&#xff0c;我觉得问题出在了路径的上&#xff0c;文件夹名字太长了&#xff…

编程经验:关于如何在自己的网站或博客添加CNZZ站长统计功能

关于如何在自己的网站或博客添加CNZZ站长统计功能 1、 注册帐号 http://new.cnzz.com/user/reg.php 这里需要邮箱作为用户名哟&#xff0c;请先注册好邮箱&#xff08;任何邮箱都行&#xff09; 2、 注册完&#xff0c;添加下属站点 http://new.cnzz.com/v1/main.php?ssite…

20+个最棒的 CSS 在线参考网站

20个最棒的 CSS 在线参考网站 时间 2015-06-19 10:20:59 Coder资源网 原文 http://info.9iphp.com/20-css-reference-websites/ 主题 CSS 如果你是一个WEB开发人员&#xff0c;你不可能记得所有的CSS属性和值&#xff0c;这时&#xff0c;CSS参考手册将是非常有帮助的。这篇…

网站可访问性

1、什么是可访问性&#xff1f; 可访问性是一种让尽可能多的用户可以使用你的网站的做法。传统上我们认为这只与残疾人士有关&#xff0c;但是从更广的意义上来讲&#xff0c;对于移动端用户、低网速用户、键盘使用者等都适用。 无障碍指南和法律 万维网联盟&#xff1a;万维…

如何通过GZIP来优化你的网站

如果你想节省带宽提高网站速度&#xff0c;压缩是一种简单有效的方法。当我打算提高JavaScript的传输速率来开启GZIP压缩的时候&#xff0c;我犹豫了因为有旧版本浏览器的存在&#xff08;IE6&#xff09;。 然而在二十一世纪&#xff0c;我们大部分的流量来自于现代浏览器&am…