❤️爆肝万字整理的综合架构web服务之nginx详解❤️,附建议收藏(代码片段)

宝山的博客 宝山的博客     2022-12-30     701

关键词:

nginx 服务配置详细介绍

关于作者

📢博客主页https://blog.csdn.net/weixin_42313749
hello,大家好!我是黄昏,我们一起来学linux 云计算。如果喜欢博客,点个赞,关注下哟
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
对linux 云计算|华为|华三|思科等数通网络技术感兴趣,可以私信博主,私信获取教程,一起交流技术

📢未来可期 让生命像一团热烈燃烧的火,直到死亡才能使它熄灭

前言

如果你听说或使用过Apache 软件,那么很快就会熟悉nginx 软件,与Apache 软件类似,它是一个 俄罗斯人 lgor Sysoev 开发的。最初用在俄罗斯的大型网站上,后来将代码公布,形成一个开源的、支撑高性能、高并发的 WWW 服务器和代理服务软件。

那么今天呢,小编就结合企业工作案列,对nginx 做一个详解的介绍。

如果有少许问题,如果少许错误,可以私信博主纠正、一起学习进步!

一、nginx web 入门简介

1.1 什么是nginx

  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器
  • Nginx是一款轻量级的Web 服务器/反向代理服 务器及电子邮件(IMAP/POP3)代理服务器
  • nginx 可以运行在UNIX、Linux、BSD 、Mac OS X 、Solaris,以及windows 等操作系统中。随着nginx 在国内很多大型网站中的稳定高效运行,近两年来它 逐渐被越来越多的中小型网站所使用。当前流行的Nginx Web组合被称为 LNMP 或LEMP(linux nginx Mysql PHP ),其中E 取自 Nginx中得(enginex)

1.2 常见的网站服务

  • 处理静态资源的服务:
    apache软件: http://apache.org/
    nginx软件: http://nginx.org

  • 处理动态资源的服务:
    PHP: php.net 终端浏览器进行访问
    Tomcat(java): 利用移动端查看网页 安卓-java
    PYTHON: 开发难度比较低

1.3 nginx 网站服务特点

  • Nginx具有高并发,消耗内存少

  • 具有多种功能(web、负载均衡–LVS、网站缓存–Squid)

  • 实现通讯时使用 异步网络IO 模型:epoll模型

  • 可以部署的平台多样化

  • 对php可使用cgi方式和fastcgi方式

  • 补充:

    异步:(你发给我,我可以缓存,稍后在处理)
    同步:(你发我一个,我就必须处理一个)
    
    

1.4 网站页面访问原理

  • 将域名进行解析 www.hbs.com — 10.0.0.7

  • 建立TCP的连接(四层协议)

    • 10.0.0.7 目标端口 8080
  • 请求报文: hosts: bbs.hbs.com

    • 没有相同域名的server主机,会找满足端口要求的第一个主机
      显示主机的网站页面

二、nginx 服务部署安装

2.1实验环境

系统版本系统ip地址
Centos 7.610.0.0.7

2.2 YUM 安装

  • 使用官方yum源进行安装 安装的是最新版本 软件目录结构比较标准 (推荐)

  • 配置官方nginx yum 源:

  • 安装命令

    # 配置nginx yum源
    [root@web_server01~]# cat /etc/yum.repos.d/nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    [root@web_server01~]# 
    
    #安装 nginx
    [root@web_server01~]# yum -y install nginx 
    
    # 启动nginx 服务,检查安装正确性
    [root@web_server01~]# systemctl start nginx
    [root@web_server01~]# systemctl enable nginx
    
    # 测试,打开本地浏览器,输入IP 地址可以访问即 安装成功
    
  • 本地浏览器测试

  • 清除 nginx 软件

    #去除nginx 安装软件
    [root@web_server01~]# yum  erase nginx 
    [root@web_server01~]# yum clean all  
    
    # 目的是,为了演示源码编译安装。后面实验,均是源码安装
    

2.3 源码编译安装

  • 源码安装步骤

    1.# 下载源码安装包
    [root@web_server01~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz
    --2021-08-31 13:48:54--  http://nginx.org/download/nginx-1.20.1.tar.gz
    Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5704::6, ...
    Connecting to nginx.org (nginx.org)|3.125.197.172|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1061461 (1.0M) [application/octet-stream]
    Saving to: ‘nginx-1.20.1.tar.gz’
    
    100%[=========================================================>] 1,061,461    278KB/s   in 3.7s   
    
    2021-08-31 13:48:59 (278 KB/s) - ‘nginx-1.20.1.tar.gz’ saved [1061461/1061461]
    
    
    2. # 解压安装包
    [root@web_server01~]# tar xf nginx-1.20.1.tar.gz -C /usr/src/
    
    3. # 创建系统用户
    [root@web_server01~]# useradd -M -s /sbin/nologin nginx
    
    4. # 创建日志存放目录
    [root@web_server01~]# mkdir -p /var/log/nginx
    
    5. # 安装nginx 依赖包
    [root@web_server01~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
    
    6. # 开始编译
    [root@web_server01/usr/src/nginx-1.20.1]# ./configure --user=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --without-http_rewrite_module
    
    7. # 编译&&安装
    [root@web_server01/usr/src/nginx-1.20.1]# make && make install
    
    8.# 检查nginx 配置文件是否安装正确 ,返回ok 即可
    [root@web_server01/usr/src/nginx-1.20.1]# /usr/local/nginx/sbin/nginx  -t 
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    
  • 启动nginx 服务

    # 启动nginx 服务
    [root@web_server01~]# /usr/local/nginx/sbin/nginx
    
  • 补充nginx 安装后配置(可以不配),推荐配置

    # 配置nginx 环境变量
    [root@web_server01~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
    [root@web_server01~]# source /etc/profile.d/nginx.sh 
    
    #服务控制方式,使用nginx命令
        -t  //检查配置文件语法
        -v  //输出nginx的版本
        -c  //指定配置文件的路径
        -s  //发送服务控制信号,可选值有stop|quit|reopen|reload
        
    # 启动nginx
    [root@web_server01~]# nginx
    [root@web_server01~]# ss -lant
    State       Recv-Q Send-Q    Local Address:Port                   Peer Address:Port              
    LISTEN      0      128                   *:80                                *:*                  
    LISTEN      0      128                   *:22                                *:*                  
    LISTEN      0      100           127.0.0.1:25                                *:*                  
    ESTAB       0      0              10.0.0.7:22                         10.0.0.1:62580              
    LISTEN      0      128                  :::22                               :::*                  
    LISTEN      0      100                 ::1:25                               :::*                  
    # 停止nginx
    [root@web_server01~]# nginx -s stop
    

2.4 nginx重要文件目录结构

  • /etc/nginx配置文件
    /var/log/nginx日志文件
    /usr/share/nginx/html站点目录
    /etc/nginx/nginx.confnginx 主配置文件
    /etc/nginx/conf.d/default.conf扩展配置文件(虚拟主机)
  • /etc/logrotate.d/ 日志切割的目录

    [root@web_server01~]# rpm -ql nginx
    /etc/logrotate.d/nginx          #  实现nginx日志文件定时切割处理
    /etc/nginx                      # nginx 配置文件
    /etc/nginx/nginx.conf           # 主配置文件
    /etc/nginx/conf.d/default.conf  # 虚拟主机配置文件
    /etc/nginx/fastcgi_params
    /etc/nginx/mime.types           # 媒体资源类型文件
    /etc/nginx/modules
    /etc/nginx/nginx.conf
    /etc/nginx/scgi_params
    ……
    等
    
  • nginx 主配置文件介绍

    # 备份 nginx 配置文件
    [root@web_server01/etc/nginx]# cp nginx.conf,.bak
    
    # 过滤以 空格 开头的内容
    [root@web_server01/etc/nginx]# grep "^$" nginx.conf.bak
    
    # 将过滤出来的内容取反
    [root@web_server01/etc/nginx]# grep -v "^$" nginx.conf.bak
    
    # 过滤取反后的文件重定向 到nginx 配置文件中
    [root@web_server01/etc/nginx]# grep -v "^$" nginx.conf.bak > nginx.conf
    
    ==重要提示==
    [root@web_server01/etc/nginx]# cat nginx.conf
    # 第一部分:配置文件主区域配置
    
    user  nginx;                             # 定义worker进程管理的用户
    worker_processes  auto;                  # 定义有几个worker进程,它等于CPU 核数  /核数的2倍                      
    error_log  /var/log/nginx/error.log notice;   #定义错误日志
    pid        /var/run/nginx.pid;                            #定义PID 文件路径信息
    
    
    # 第二个部分: 配置文件事件区域
    events 
    worker_connections  1024;   ---- 一个worker进程同时可以接受1024个访问请求
    
    
    
    # 配置http 区域
    http 
    include       /etc/nginx/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  /var/log/nginx/access.log  main; ---- 指定日志路径,调用日志    
    sendfile        on;                ---- 特殊的数据传输功能
    #tcp_nopush     on; 
    参数sendfile on 用于开启文件高效传输模式,同时将tcp_nopush on 和tcp_nodelay on 两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率
    
    keepalive_timeout  65;             ----超时时间
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;  - --- 加载一个配置文件
    
    
    
    # 第四个部分: server区域信息(配置一个网站 www/bbs/blog -- 一个虚拟主机)
    server 
      listen       8080;                --- 指定监听的端口
      server_name  www.oldboy.com;      --- 指定网站域名                     
      root   /usr/share/nginx/html;     --- 定义站点目录的位置
      index  index.html index.htm;      --- 定义首页文件
      error_page   500 502 503 504  /50x.html;   --- 优雅显示页面信息
      location = /50x.html 
          root   /usr/share/nginx/html;
      
    
    ============分割线==============分割线===================分割线=================
    补充:nginx 进程,他有2个进程
    master process:主进程    ----管理服务是否正常运行
    worker process:工作进程  ----处理用户的访问请求
    
    [root@web_server01/etc/nginx]# ps -ef|grep nginx
    root      35183      1  0 11:54 ?        00:00:00 nginx: master process nginx
    nginx     35184  35183  0 11:54 ?        00:00:00 nginx: worker process
    root      35419  35155  0 13:04 pts/0    00:00:00 grep --color=auto nginx
    

2.5 虚拟主机介绍及配置

  • 虚拟主机配置

    在真实的服务器环境,为了充分利用服务器资源,一台nginx web服务器同时会配置N个虚拟域名主机,即多个域名对于同样一个80端口。然后服务器IP数量很多,也可以配置基于多个IP对应同一个端口。

  • 配置虚拟主机配置文件介绍

    [root@web_server01/etc/nginx]# cd conf.d/
    [root@web_server01/etc/nginx/conf.d]# cp default.conf,.bak     #先备份配置文件
    
    #过滤空格、# 开头的内容。(^$ 空格空格开头,^# #号开头、-v 取反)
    [root@web_server01/etc/nginx/conf.d]# egrep -v "^$|#" default.conf.bak 
    server 
        listen       80;
        server_name  localhost;
        location / 
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
            root   /usr/share/nginx/html;
        
    
    [root@web_server01/etc/nginx/conf.d]# egrep -v "^$|#" default.conf.bak  > default.conf
    [root@web_server01/etc/nginx/conf.d]# cat default.conf
    server 
        listen       8080;         -----指定监听端口,原本80,这里我修改成8080(目的是为了做第一个简单的www网站)
        server_name  localhost;    ----指定网站域名
       
       location /                ----通过指定模式来与客户端请求的URI相`匹配`
            root   /usr/share/nginx/html; ---- 定义站点目录的位置
            index  index.html index.htm;  ---- 定义首页文件
        
        error_page   500 502 503 504  /50x.html;  ---- 优雅显示页面信息
        location = /50x.html 
            root   /usr/share/nginx/html;
        
    
    [root@web_server01/etc/nginx/conf.d]# 
    

2.5.1利用nginx服务搭建一个网站(www)

前提是,你把/etc/nginx/conf.d/default.conf,80端口 修改成8080或其他端口。

否则看不到效果,每次看到的都是 默认欢迎界面

# 第一步:进入到虚拟主机配置文件目录
[root@web_server01~]# cd /etc/nginx/conf.d/
[root@web_server01/etc/nginx/conf.d]# ls
default.conf  default.conf.bak  www.conf
[root@web_server01/etc/nginx/conf.d]# vim www.conf
[root@web_server01/etc/nginx/conf.d]# cat www.conf 
server 
  listen        80;
  server_name   www.hbs.com;
  location  / 
           root   /usr/share/nginx/html;
           index  hbs.html;


[root@web_server01/etc/nginx/conf.d]# 

第二个历程: 需要获取开发人员编写的网站代码

# 这里自己写一个测试网页

[root@web_server01/etc/nginx/conf.d]# cd /usr/share/nginx/html/
[root@web_server01/usr/share/nginx/html]# cat hbs.html 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我的第一个html</title>
</head>
<body>
<h1>大家好!我是黄昏</h1>
<p>nginx配置的第一个简单的html</p>
</body>
</html>
[root@web_server01/usr/share/nginx/html]# ls
50x.html  hbs.html  index.html

第三个历程: 重启nginx服务

第三个历程: 重启nginx服务(平滑重启)
	两种方法:
	systemctl reload nginx 
	nginx -s reload
	
	nginx命令参数
	-t            : test configuration and exit
	                检查测试配置文件语法
	-s            : send signal to a master process: stop, quit, reopen, reload
	                控制服务停止或者重新启动

第四个历程: 编写DNS配置信息

第四个历程: 编写DNS配置信息
真实域名: 在阿里云上进行DNS解析记录配置
	模拟域名: 在windows主机的hosts文件中进行配置即可
	          C:\\Windows\\System32\\drivers\\etc\\hosts
	          10.0.0.7  www.hbs.com  hosts文件末尾添加Ip 域名

第五个历程: 进行测试访问

第五个历程: 进行测试访问
	浏览器中: http://www.oldboy.com

2.5.2 location介绍、location 访问控制及 优雅404显示

  • location 介绍:

    允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制等功能
    
    = 精确匹配
    location = /hbs 
    
    ~ 正则表达式,区分大消息
    location ~ ^/hbs$
     
    ~* 不区分大小写
    location ~* ^/hbs$ 
    匹配顺序:
    带有=的精确匹配优先
    正则表达式按照他们在配置文件中定义的顺序
    带有^~修饰符的,开头匹配
    
  • location 访问控制

    用于location段
    allow:设定允许哪台或哪些主机访问,多个参数间用空格隔开
    deny:设定禁止哪台或哪些主机访问,多个参数间用空格隔开
    示例:
    
    allow 192.168.1.1/32 172.16.0.0/16;
    deny all;
    
    # 放行了10.0.0.81/32 172.16.0.0/16,拒绝了其它ip地址
    location  /hbs 
                     root   /usr/share/nginx/html;
                     index  hbs.html;
                     allow 10.0.0.81/32 172.16.0.0/16
                     deny all
        
    
  • 补充:访问策略配置写法

     写法1:
     server 
             listen        80;
             server_name   www.hbs.com;
               root  /html/www;
               index index.html;
             location /AV 
               deny  10.0.0.0/24;
               allow 172.16.1.0/24;
             
          
     
     写法2:
     server 
             listen        80;
             server_name   www.hbs.com;
             location / 
               root  /html/www;
               index index.html;
             
             location /AV 
               deny  10.0.0.0/24;
               allow 172.16.1.0/24;
               root  /html/www;
               index index.html;
             
          
          补充: 
    	  location外面的信息, 全局配置信息
    	  location里面的信息, 局部配置信息
    
  • 优雅界面404 显示

    
    

2.5.3 利用nginx服务搭建一个多网站(www、 love、 blog)

  • 第一步:创建三个配置文件

    [root@web_server01/etc/nginx/conf.d]# ls
    bbs.conf  blog.conf  default.conf  default.conf.bak  www.conf
    # www.conf 配置文件
    [root@web_server01/etc/nginx/conf.d]# cat www.conf 
    server 
       listen      80;
       server_name  www.hbs.com;
       location / 
           root   /usr/share/nginx/html/www;
           index  index.html;
       
    
    
    # bbs.conf 配置文件
    [root@web_server01/etc/nginx/conf.d]# cat bbs.conf 
    server 
        listen        80;
        server_name   bbs.hbs.com;
        location  / 
           root   /usr/share/nginx/html/bbs;
           index  index.html;
        
    
    
    # blog.conf 配置文件
    [root@web_server01/etc/nginx/conf.d]# cat blog.conf 
    server 
       listen        80;
       server_name   blog.hbs.com;
       location  / 
           root   /usr/share/nginx/html/blog;
           index  index.html;
        
    
    [root@web_server01/etc/nginx/conf.d]# 
    
  • 第二步:创建站点目录和目录中首页文件

    # 常见站点目录
    [root@web_server01~]# mkdir -p /usr/share/nginx/html/www,bbs,blog
    
    # 创建站点首页文件
    [root@web_server01/usr/share/nginx/html]# ls
    50x.html  bbs  blog  index.html  www
    [root@web_server01/usr/share/nginx/html]# cat www/index.html 
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>我的第一个html</title>
    </head>
    <body>
        <h1>大家好!我是黄昏</h1>
        <p>10.0.0.7 www.hbs.com</p>
    </body>
    </html>
    ……
    # 重启 nginx
    [root@web_server01~]# systemctl stop nginx
    [root@web_server01~]# systemctl start nginx
    
  • 添加hosts 文件:

  • 测试

2.5.4 企业中虚拟主机 访问方式

  • 基于域名的方式方式进行访问

  • 基于地址的方式进行访问(只能用指定地址访问)—负载均衡+高可用服务

    	  server 
             listen        10.0.0.7:80;   # 填写地址
             server_name   www.hbs.com;
             location  / 
               root  /html/www;
               index index.html;
             
          
          
     配置完毕了,需要关闭/重启nginx
    
  • 基于端口的方式进行访问:(zabbix服务(apache:80) + web服务(nginx:80) --> 2个端口重复)

    # 修改端口
    
    [root@web_server01/etc/nginx/conf.d]# cat www.conf 
    server 
       listen      8080;
       server_name  www.hbs.com;
       location / 
           root   /usr/share/nginx/html/www;
           index  index.html;
       
    
    [root@web_server01/etc/nginx/conf.d]# 
    
    [root@web_server01/etc/nginx/conf.d]# systemctl restart nginx
    [root@web_server01/etc/nginx/conf.d]# netstat -lntup|grep 80
    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      38784/nginx: master 
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      38784/nginx: master 
    [root@web_server01/etc/nginx/conf.d]# 
    
    

2.5.5 基于 用户访问 认证

  • nginx认证模块: ngx_http_auth_basic_module

  • 举例配置

      location / 
             auth_basic           "closed site";    --- 开启认证功能(欢迎信息)
             auth_basic_user_file conf/htpasswd;    --- 加载用户密码文件,密码文件存放路径
          
          密码文件存放路径,推荐相对路径
    
  • 具体详细配置过程

    第一个历程: 编写虚拟主机配置文件

    [root@web_server01/etc/nginx]# cat conf.d/www.conf 
    server 
      listen      80;
      server_name  www.hbs.com;
      location / 
          root   /usr/share/nginx/html/www;
          index  index.html;
          auth_basic   "欢迎来到王者荣耀!";
          auth_basic_user_file  passwd/passwd;        #passwd目录下的passwd密码文件
      
    
    

    第二个历程: 创建密码文件(文件中密码信息必须是密文的)

    # 创建 一个目录,存放密码文件
    [root@web_server01/etc/nginx]# mkdir passwd
    
    # 检查是否有htpasswd 密码工具,没有yum 安装httpd-tools
    [root@web_server01/etc/nginx/passwd]# rpm -qf `which htpasswd` 
    httpd-tools-2.4.6-97.el7.centos.x86_64
    [root@web_server01/etc/nginx/passwd]# 
    
    # 生成密码文件
    [root@web_server01/etc/nginx/passwd]# htpasswd -bc passwd hbs 123456
    Adding password for user hbs
    [root@web_server01/etc/nginx/passwd]# cat passwd 
    hbs:$apr1$7WaamHGp$ENgUQ2yncebNZpFtGbRyX.
    [root@web_server01/etc/nginx/passwd]#
    
    # 查看生成的用户及密码
    [root@web_server01/etc/nginx/passwd]# cat passwd 
    hbs:$apr1$7WaamHGp$ENgUQ2yncebNZpFtGbRyX.
    [root@web_server01/etc/nginx/passwd]# 
    

    这样就可以直接测试,但是由于这样的密码文件具有较高的权限,不安全,所以涉及到修改密码文件,及文件属主。如果不修改文件权限,则不安全。

  • 测试

  • 修改文件权限

    [root@web_server01/etc/nginx/passwd]# chmod 600 ./passwd
    
  • 测试

  • 报500问题原因

  • 解决问题方法

    [root@web_server01/etc/nginx/passwd]# chown nginx ./passwd
    
  • 测试

2.5.6 利用nginx服务搭建网站文件共享服务器–index of

  • 文件共享

    如何利用nginx服务搭建文件共享呢,比如像 阿里镜像网站那样,输入域名就可以看到很多目录,打开还可以 下载呢

  • 操作步骤

    第一个步: 编写配置文件(开启autoindex模块)

    server 
      listen      80;
      server_name  www.hbs.com;
      location / 
          root   /usr/share/nginx/html/www;
          auth_basic   "欢迎来到王者荣耀!";
          auth_basic_user_file  passwd/passwd;
          autoindex on;                  # 开启autoindex 模块即可。
      
    
    

    第二步:重启服务,如果有首页,将首页删除并制造测试数据

    # 准备好的测试数据
    [root@web_server01/usr/share/nginx/html/www]# ls
    Centos  Centos6.5  Centos6.9  Centos7.1  Centos7.2  hbs.txt  index.html.backup
    
    # 重启nginx 服务
    [root@web_server01/usr/share/nginx/html/www]# systemctl restart nginx
    

    此时测试,我们只有查看的权限,如果想下载,还学要修改mime.types文件。

    mime.types媒体资源类型文件作用
    文件中有的扩展名信息资源, 进行访问时会直接看到数据信息 txt
    文件中没有的扩展名信息资源, 进行访问时会直接下载资源 php

  • 赋予下载权限,修改mime.types 配置文件

    修改 mime.types配置文件,搜索txt,将txt 改成php 就可以下载了。
    
  • 测试

2.5.7 nginx 解决首页乱码问题

  • 设置成utf-8

    server 
       listen      80;
       server_name  www.hbs.com;
       location / 
           root   /usr/share/nginx/html/www;
           auth_basic   "欢迎来到王者荣耀!";
           auth_basic_user_file  passwd/passwd;
           charset utf-8;                  
       
    
    
    location 添加 charset utf-8; 
    

2.5.8 利用nginx服务搭配置文件别名功能

  • 配置别名

    这里就是比如你的域名很长,你想配置短一点的域名例如:

    www.hbs.com 你配一个 bs.com的别名

    1.修改配置文件

    server_name www.hbs.com bs.com
    

    2.重启nginx 服务

    [root@web_server01/etc/nginx]# systemctl restart nginx
    

    3.修改hosts 文件

2.5.9 利用nginx状态模块功能对网站进行监控

  • 开启监控模块ngx_http_stub_status_module

    location = /basic_status 
            stub_status;
        
    ===========================
    这里我在 conf.d 目录新建了一个关于状态的站点 status.conf
    [root@web_server01/etc/nginx/conf.d]# cat status.conf 
      server 
         listen    80;
         server_name  status.oldboy.com
         stub_status;
    
    
    # 平滑启动nginx
    [root@web_server01/etc/nginx/conf.d]# systemctl reload nginx
    
    添加hosts 域名
    
  • 访问测试

  • 监控获取参数说明

    ​ Active connections: 激活的连接数信息 4000用户 3500
    ​ accepts: 接收的连接数汇总(综合) TCP
    ​ handled: 处理的连接数汇总(综合) TCP
    ​ requests: 总计的请求数量 HTTP协议请求
    ​ Reading: nginx服务读取请求报文的数量 100人点餐
    ​ Writing: nginx服务响应报文信息数量 100人响应
    ​ Waiting: nginx队列机制,要处理(读取或者响应保存进行保存) 监控

2.5.10 nginx 日志功能配置及错误日志介绍

  • 访问日志/var/log/nginx/access.log ngx_http_log_module

  • 错误日志/var/log/nginx/error.log --- Core functionality

    访问日志介绍

    # 定义日志内容格式
    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  /var/log/nginx/access.log  main;    #调用日志格式                            
    
    $remote_addr   			    显示用户访问源IP地址信息
       $remote_user            显示认证的用户名信息
    [$time_local]           显示访问网站时间
    "$request"              请求报文的请求行信息
       $status                 用户访问网站状态码信息
    $body_bytes_sent        显示响应的数据尺寸信息
    $http_referer           记录调用网站资源的连接地址信息(防止用户盗链)                    
    www.hbs.com---access.log--->blog.hbs.com到www.hbs.com的连接--->http_referer(链接)
    $http_user_agent        记录用户使用什么客户端软件进行访问页面的  (谷歌 火狐 IE 安卓 iphone)
    $http_x_forwarded_for   负载均衡
    
    [root@web_server01/var/log/nginx]# tail -f /var/log/nginx/www_access.log 
    10.0.0.129 - - [02/Sep/2021:17:52:41 +0800] "GET / HTTP/1.1" 401 179 "-" "Mozilla/5.0

    ❤️爆肝万字!一文最全总结之spring从入门到入土❤️(建议收藏)(代码片段)

    文章目录前言1.Spring概述1.1介绍2.IoC入门2.1什么是IoC2.2IoC入门案例1(基础案例)2.3IoC入门案例2(依赖注入)2.4IoC入门案例3(面向接口编程)2.5IoC入门案例4(整合JUnit4)3.IoC详解3.1Bean的创建3.2依赖注... 查看详情

    ☀️~算法系列之爆肝万字总结七种查找算法,持续补充更新中,建议收藏~☀️(代码片段)

    🍅作者主页:Roninaxious🍅欢迎点赞👍收藏⭐留言📝🍅话不多说🍁开卷!🚢顺序查找算法🚢二分查找算法💥优化二分查找算法🚢插值查找算法🚢斐波那契查找算法🚢顺序... 查看详情

    ☀️~爆肝万字总结递归~❤️玩转算法系列之我如何才能掌握递归解题的能力❤️~十大经典问题助你突破极限~☀️(代码片段)

    🍅作者主页:Roninaxious🍅欢迎点赞👍收藏⭐留言📝🚢前言🎐何为递归递归顾名思义就是´递´和´归´👀所谓的‘递’也就是“向下递去”,这个问题可以分解为若干个且形式相同的子问题... 查看详情

    ❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️(代码片段)

    Hello,大家好,我是Alex。时光匆匆,暑假过的很快,转眼又到了大学的开学季,我也是又混进了我们学院的新生群,发现大家对计算机充满着迷之向往,啊哈哈哈,不过没有人带着入门还是很容易... 查看详情

    pythonopencv实战画图——这次一定能行!爆肝万字,建议点赞收藏~❤️❤️❤️(代码片段)

    📢📢📢📣📣📣🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,小白一枚,多多关照😜😜😜🏅🏅 查看详情

    (大厂必备)厂长熬夜爆肝万字之多线程高并发juc编程⭐学妹已收藏(代码片段)

    🔥(大厂必备)厂长熬夜爆肝万字之多线程高并发JUC编程(一)⭐学妹已收藏❤️‍大家好,我是java厂长,今天带你们体验一把多线程高并发的面试高频!❤️‍关于作者作者介绍🍓博客主页:作者主页🍓... 查看详情

    (大厂必备)厂长熬夜爆肝万字之多线程高并发juc编程⭐学妹已收藏(代码片段)

    🔥(大厂必备)厂长熬夜爆肝万字之多线程高并发JUC编程(二)⭐学妹已收藏❤️‍大家好,我是java厂长,今天再次带你们体验一把多线程高并发的面试高频!❤️‍关于作者作者介绍🍓博客主页:作者主页&#... 查看详情

    ❤️爆肝四万字的mysql总结全面整理+详细解释❤️(代码片段)

    文章目录1.初识MySQL1.2数据库分类1.3MySQL简介1.4MySQL安装1.5MySQL(压缩包)安装配置1.6SQLyog使用的注意事项1.7连接数据库和一些基本命令2.操作数据库2.1操作数据库2.2数据库的数据类型(列类型)2.3数据库的字段属性2.4创建数据库表(... 查看详情

    ❤️❤️爆肝3万字整理小白入门与提升分布式版本管理软件:git,图文并茂(建议收藏)--已码一万字❤️❤️(代码片段)

    小白快速快入门Git什么是GitSVNVSGit什么是版本控制安装Git谁在操作?Git本地仓库本地仓库构造重点Git常用基本操作gitaddgitcommitgitdiffgitloggitresetgitmvcheckoutgittagclearGithub使用教程什么是Github安装Github添加远程仓库找到key打开Github... 查看详情

    ❤️❤️新生代农民工爆肝8万字,整理python编程从入门到实践(建议收藏)已码:8万字❤️❤️(代码片段)

    人生苦短,我用Python开发环境搭建安装Python验证是否安装成功安装Pycharm配置pycharm编码规范基本语法规则保留字单行注释多行注释行与缩进多行语句数据类型空行等待用户输入print输出运算符算术运算符逻辑运算符成员运算符... 查看详情

    综合架构web服务之nginx详解(代码片段)

    文章目录nginx服务配置详细介绍关于作者前言一、nginxweb入门简介1.1什么是nginx1.2常见的网站服务1.3nginx网站服务特点1.4网站页面访问原理二、nginx服务部署安装2.1实验环境2.2YUM安装2.3源码编译安装2.4nginx重要文件目录结构2.5虚拟主... 查看详情

    中秋节爆肝万字,带你熟悉linux进程的基本操作!!!(代码片段)

    今天是中秋节,祝各位小伙伴中秋节快乐,记得吃月饼吖图片来自网络,侵联删Linux进程基本操作1.进程基本概念在Linux中进程信息被保存在task_struct(PCB)2.查看进程的方法pspsaux|greapmyprocls/proc3.创建进程fork():创建一个子进程#i... 查看详情

    中秋节爆肝万字,带你熟悉linux进程的基本操作!!!(代码片段)

    今天是中秋节,祝各位小伙伴中秋节快乐,记得吃月饼吖图片来自网络,侵联删Linux进程基本操作1.进程基本概念在Linux中进程信息被保存在task_struct(PCB)2.查看进程的方法pspsaux|greapmyprocls/proc3.创建进程fork():创建一个子进程#i... 查看详情

    熬夜爆肝万字c#基础入门大总结建议收藏(代码片段)

    往期文章分享点击跳转=>熬夜再战Android从青铜到王者-UI组件快速搭建App界面点击跳转=>熬夜再战Android从青铜到王者-几个适配方案点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇点击跳转=>Unity粒子特... 查看详情

    ❤️爆肝3万字,最硬核丨mysql知识体系命令全集建议收藏❤️(代码片段)

    🍅作者主页:不吃西红柿  🍅简介:CSDN博客专家🏆、信息技术智库公号作者✌ 简历模板、PPT模板、学习资料、面试题库、技术互助【关注我,都给你】🍅 欢迎点赞👍收藏⭐留言 📝  &#x... 查看详情

    建议收藏|熬夜爆肝万字文带你了解dom,文末有彩蛋嗷!!!!✨✨✨(代码片段)

    感激相遇你好我是阿ken作者:请叫我阿ken链接:请叫我阿ken主页链接来源:CSDN著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。🌊🌈关于前言:文章部分内容及图片出自网... 查看详情

    建议收藏|熬夜爆肝万字文带你了解dom,文末有彩蛋嗷!!!!✨✨✨(代码片段)

    感激相遇你好我是阿ken作者:请叫我阿ken链接:请叫我阿ken主页链接来源:CSDN著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。🌊🌈关于前言:文章部分内容及图片出自网... 查看详情

    ❤️手把手教你打造一个企业级实时数据中台❤️熬夜爆肝&&万字图文

    引言——首先来聊聊现代企业数据架构及痛点:数据孤岛:低效率和利用困难的根源应用瓶颈:传统方案数据仓库、数据湖的不足 单讲这两个问题你可能会疑惑——为什么会出现这样的问题? 所以下面来讲讲... 查看详情