Nginx的部署与基础使用

一、下载安装

安装方式

1.yum       

2.源码包:

        2.1直接安装       

        2.2编译安装

Nginx 编译安装参数
	nginx -V

		nginx version: nginx/1.14.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

======================================基本配置===========================================
		
        configure arguments:         配置参数./configure --help查询帮助

		--prefix=/etc/nginx          安装路径
			
		--sbin-path=/usr/sbin/nginx   程序文件
			 
		--modules-path=/usr/lib64/nginx/modules    模块路径
			
		--conf-path=/etc/nginx/nginx.conf    主配置文件
			 
		--error-log-path=/var/log/nginx/error.log    错误日志
			 
		--http-log-path=/var/log/nginx/access.log    访问日志
			 
		--pid-path=/var/run/nginx.pid                程序ID
			 
		--lock-path=/var/run/nginx.lock        锁路径,防止重复启动nginx
			 
		--http-client-body-temp-path=/var/cache/nginx/client_temp    缓存
			 
		--http-proxy-temp-path=/var/cache/nginx/proxy_temp           代理缓存
			 
		--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp       php缓存
			 
		--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp           python缓存 
			
		--http-scgi-temp-
        path=/var/cache/nginx/scgi_temp 

		--with-compat             启用动态模块兼容性
			
		--user=nginx              用户
			
		--group=nginx             组


==========================================模块类=========================================
			
		--with-file-aio           就是异步非阻塞
			(使用nginx的aio特性会大大提高性能,比如图片站的特点是大量的读io操作,nginx aio不用等待每次io的结果,有助于并发处理大量io和提高nginx处理效率。
			aio的优点就是能够同时提交多个io请求给内核,然后直接由内核的io调度算法去处理这些请求(directio),这样的话,内核就有可能执行一些合并,节约了读取文件的处理时间。)
			

		--with-threads             多线程模块
			
		--with-http_addition_module     响应之前或者之后追加文本内容,比如想在站点底部追加一 
                                        个js广告或者新增的css样式
			
			
		--with-http_auth_request_module     认证模块
			
		--with-http_dav_module         增加上传PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默        
                                       认情况下为关闭
			
		--with-http_flv_module         NGINX 添加MP4、FLV视频支持模块
			
		--with-http_gunzip_module         压缩模块
			
		--with-http_gzip_static_module     另一个压缩模块

		--with-http_mp4_module         多媒体模块
			
		--with-http_random_index_module     nginx显示随机首页模块
			
		--with-http_realip_module         Nginx获取真实IP模块
			
		--with-http_secure_link_module     nginx安全下载模块
			
		--with-http_slice_module         nginx中文文档
			
		--with-http_ssl_module        安全模块
			 
		--with-http_stub_status_module         访问状态
			
		--with-http_sub_module         nginx替换网站响应内容
			
		--with-http_v2_module

		--with-mail         邮件客户端
			
		--with-mail_ssl_module 

		--with-stream 
			负载均衡模块。nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代 
            理或者负载均衡等。
		--with-stream_realip_module 

		--with-stream_ssl_module

		--with-stream_ssl_preread_module 

=======================================CPU优化参数=======================================		
       
         --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --
param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' 
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' 

二、基本配置认识

/etc/logrotate.d/nginx                        日志轮转

/etc/nginx/nginx.conf                        总配置文件(各大主要模块配置位置)

/etc/nginx/conf.d/*.conf                    子配置文件夹(通常情况新的server模块一般配在子配文件)

/etc/nginx/conf.d/default.conf          默认的网站配置文件(某些老版本可能将内容直接配置在主                                                              配,会没有这个文件)

/etc/nginx/koi-utf                                字符集,文件编码

/etc/nginx/mime.types                        文件关联程序  网站文件类型 和 相关处理程序

/etc/nginx/modules                                模块文件夹。第三方模块

/usr/sbin/nginx-debug                                nginx调试程序

/usr/lib/systemd/system/nginx-debug.service        nginx调试程序启动脚本

/usr/lib/systemd/system/nginx.service systemctl        服务脚本

/usr/sbin/nginx                                             Nginx主程序

/usr/share/nginx/html/index.html                默认主页

/usr/lib64/nginx                                        Nginx模块目录

/var/cache/nginx                                        缓存各种  

/var/log/nginx                                     日志文件夹     ls /var/log/nginx/           access.log   error.log

三、基本配置

1.了解nginx.conf文件组成 --------  /etc/nginx/nginx.conf

1.1 全局块


----------------------------------全局块-------------------------------------
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

全局块是Nginx配置文件的开始部分,主要设置一些影响Nginx服务器整体运行的配置指令。

  • user:指定Nginx运行的用户和用户组,默认为nobody
  • worker_processes:设置工作进程数,通常设置为等于CPU核心数,也可以设置为auto自动  匹配CPU核心数。
  • error_log:设置错误日志的存放路径和日志级别。
  • pid:指定Nginx进程的PID文件存放位置。

1.2 events块(配置高并发的模块)


--------------------------------events块----------------------------------
events {
    worker_connections 1024;
}

events块主要影响Nginx服务器与用户的网络连接。

  • worker_connections:设置每个工作进程的最大连接数。
  • multi_accept:设置是否允许同时接受多个网络连接。
  • use:设置事件驱动模型,常见的有epollkqueue等。

1.3 http块


-------------------------------------http块----------------------------------
http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

   
    include /etc/nginx/conf.d/*.conf;    * 包含子配置的文件夹


    ------------------server块----------------------
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

}

http块是Nginx配置中最频繁的部分,包含了代理、缓存、日志定义等绝大多数功能和第三方模块的配置。

  • sendfile:设置是否使用sendfile方式传输文件,以提高传输效率。
  • tcp_nopush : on开启时会设置调用tcp_cork方法(默认的),结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,有助于解决网络堵塞,提高效率,但浪费网络资源(默认关闭)。
  • tcp_nodelay : 这个指令用于控制TCP_NODELAY选项(延时发送ACK包)。
  • keepalive_timeout:设置连接的保持时间。
  • types_hash_max_size:这个指令用于设置MIME类型哈希表的最大大小
  • include:引入其他配置文件,使得配置更加模块化。
  • default_type:设置默认的MIME类型。
  • mime.types:包含文件扩展名与MIME类型的映射。
  • log_format:定义日志格式,用于指定访问日志的格式。
  • access_log:指定访问日志的存放路径和使用的格式。

每个http块可以包括多个server块,每个server块相当于一个虚拟主机。

  • listen:设置监听的端口和地址。
  • server_name:设置虚拟主机的名称或IP地址。
  • location:基于Nginx服务器接收到的请求字符串对特定的请求进行处理。可以定义多个location块,每个块都有自己的匹配规则和处理方式。

 四、简单使用

0.基本命令及选项

0.1 显示帮助信息

  • 命令nginx -h 或 nginx --help
  • 作用:显示Nginx的帮助信息,包括可用的命令行选项和简短的描述。

0.2 显示版本信息

  • 命令nginx -v
  • 作用:显示Nginx的版本信息。

0.3 显示版本信息和编译配置项

  • 命令nginx -V(注意是大写的V)
  • 作用:显示Nginx的版本信息以及编译时的配置项,这对于了解Nginx的功能和性能特性很有帮助。

0.4 检查测试配置文件

  • 命令nginx -t
  • 作用:检查Nginx的配置文件(通常是nginx.conf)是否有语法错误。如果配置文件没有问题,会显示“syntax is ok”和“test is successful”的消息。

若重启nginx失败,需检查是否配置文件语法错误,若语法无误,则检查是否nginx端口被占

0.5 检查测试配置文件并输出内容

  • 命令nginx -T
  • 作用:与-t选项类似,但-T还会在终端输出配置文件的完整内容,这有助于在检查配置时快速定位问题。

0.6 向主进程发送信号

  • 命令nginx -s signal
    • signal 可以是以下之一:stopquitreopenreload
      • stop:快速关闭Nginx,不等待工作进程完成处理请求。
      • quit:平稳关闭Nginx,等待工作进程完成请求处理后再退出。
      • reopen:重新打开日志文件(通常用于日志轮转)。
      • reload:重新加载配置文件,如果配置文件有更改,Nginx将应用新的配置并启动新的工作进程,同时优雅地关闭旧的工作进程。

0.7 指定配置文件路径

  • 命令nginx -c filename
  • 作用:使用指定的配置文件启动Nginx,而不是默认的nginx.conf文件。

0.8 指定前缀路径

  • 命令nginx -p prefix
  • 作用:设置Nginx的配置文件、日志文件等文件的前缀路径。默认路径通常是/usr/local/nginx/etc/nginx,具体取决于Nginx的安装方式和操作系统。

0.9 启动时指定全局配置项

  • 命令nginx -g directives
  • 作用:在Nginx启动时指定全局配置项,而不需要修改配置文件。这些配置项以“key=value”的形式提供,并且可以在命令行中指定多个配置项。这种方式通常不用于生产环境,因为它可能会与配置文件中的设置发生冲突。

1.nginx默认html文件

/usr/share/nginx/html/index.html

2.简单写一个网页

2.1创一个目录

2.2在目录里写一个html文件

2.3写nginx配置

server {
        listen 80;
        server_name gcqlinux.com;    *域名,用于区别网站服务器,不可写IP

        location / {            *前端页面在根下
                root /gcqlinux;    *在根下的gcqlinux目录
                index index.html;     *里的index.html页面
}
}

修改配置文件需要重启nginx

2.4域名解析

2.5浏览器访问

2.6自定义404

 error_page 404 /404.html;                              指定404页面    

/var/log/nginx/access.log   &  error.log


五、日志

1.日志模块

log_format main :$remote_addr(客户端IP) -(占位符) $remote_user(用户端用户) [$time_local](本地时间) "$request"(请求URL) '     ' $status(状态:200/404/403) $body_bytes_sent(字节数大小) "$http_referer"(引用/链接地址) '    "$http_user_agent"(用户代理器) "$http_x_forwarded_for"(代理ip,转发地址)';

2.日志缓存

(默认关闭)open_log_file_cache max=1000 inactive=20s min_user=3 valid=1m;

  • max=1000参数指定了缓存中最多可以存储1000个文件描述符和文件信息(即fd句柄最大为1000)。

  • inactive=20s如果文件在20秒内没有被访问,它的缓存信息可能会被视为非活动的,并且可能会被清除(缓存时间)。

  • min_uses=3参数指定了一个文件只有在被写入至少3次后,它的缓存信息才会被视为活跃的(即写入次数)。

  • valid=1m这个参数指定了缓存信息的有效时间为1m。在这个时间内,如果文件没有被修改(即其inode没有改变),那么Nginx将认为缓存中的信息仍然有效,并且不会重新读取文件的状态信息。

3.日志轮转/切割

3.1轮转规则

需要修改日志轮转规则前往:         /etc/logrotate.d/nginx 

/var/log/nginx/*.log {
    create 0640 nginx root   创  权  主  组 
    daily                    天
    rotate 10                保留份数
    missingok                丢失不提示
    notifempty               空文件不轮转
    compress                 压缩
    delaycompress            延迟压缩
    sharedscripts            轮转后脚本
    
--------------日志轮转后执行的脚本--------------
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript              

*向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改*


}
  • create 0640 nginx root在日志文件被旋转并删除后,如果需要创建新的日志文件,则设置新文件的权限为0640(即所有者拥有读写权限,组用户拥有读权限,其他用户没有任何权限),文件的所有者设置为nginx用户,所属组设置为root组。

  • daily指定日志文件每天进行一次旋转。即每天生成一个新的日志文件,旧的日志文件会被移动并可能进行压缩。

  • rotate 10保留10个备份文件。即在进行日志旋转时,旧文件会被重命名并保存,最多保留10个旧文件,超过的会被删除。

  • missingok如果日志文件丢失,不报错继续下一个文件的处理。这可以防止在日志文件丢失时,logrotate工具报错并停止处理后续日志文件。

  • notifempty如果日志文件为空,不进行旋转。这可以避免生成空的日志文件备份。

  • compress通过gzip压缩旧的日志文件。这有助于节省存储空间。

  • delaycompress不立即压缩旋转后的旧日志文件,而是在下一次旋转时才压缩。这意味着,除了最新的日志文件外,其他的都被压缩。

  • sharedscripts在多个日志文件被处理时,只执行一次postrotateendscript中的脚本。这通常用于当你想要对一组日志文件执行统一的后续操作时。

  • postrotate...endscript在日志文件旋转后执行的脚本。

4.日志分析

4.1常用字段(变量)

$remote_addr                 $1          远程客户端地址

$time_local                     $4          本机时间

$request                          $7         请求URL

$status                            $9          状态码

$body_bytes_sent         $10        请求体积

4.2实际使用(搭配shell使用)

 例1 : (统计2024.6.27当天PV量)

cat  secure-20240627  | grep $10 <=10k | wc -l 
列出 日志secure-20240627 ,然后过滤出请求体积小于等于10k的日志,然后将符合条件的日志数量列出

 例2:(统计2024年7月17日 各种状态码数量)

grep '17/Jul/2024' access.log  |  awk '{code[$9]++} END{for(i in code){print i,code[i]}}'
过滤 日志access.log 里包含 '17/Jul/2024'  的行 , 使用 awk 来处理 grep 的输出,对于每一行 awk 都会执行 {code[$9]++},这会将第九个字段的值作为数组code的索引,并将该索引对应的值增加1(计算次数),在处理完所有行后awk会执行END块中的代码:for(i in code){print i,code[i]} 会遍历code数组,并打印出每个索引(即$9的值)及其对应的计数


 六、Nginx Web模块

1.连接状态

  检查是否下载该模块       nginx -V 2>&1 | grep stub_status

server {

        location /nginx_status {
        stub_status;
        allow all;
    }

}

 访问  192.168.105.71/nginx_status  可见

tcp是连接  http是请求

2.随机主页     

 检查是否下载该模块         nginx -V 2>&1 | grep random_index_module 

server {  
  location / {

        #root /gcqlinux;
        #index index.html;

-------------模块写在server模块的location里-----------------
        root /app;           * 路径
        random_index on;     * 开启随机多主页

        }

}

3.替换模块

检查是否下载该模块         nginx -V 2>&1 | grep  sub_module 

server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

---------------启用替换模块-------------------
        sub_filter gcqlinux "GQ";        * 将 gcqlinux 替换成 GQ
        sub_filter_once off;             * 仅替换一次(关)
}

配置在server块里

4.文件读取

位于http模块

http {
    #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;      * 一种高效的IO传输方式  
    tcp_nopush          on;      * 通过减少包的数量来提高效率
    tcp_nodelay         on;      * 通过减少TCP的延迟来提高响应速度  
--------------------------------------------------------

    #keepalive_timeout   65;
    #types_hash_max_size 4096;

}

5.文件压缩

主配置文件http模块里

http {
    #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;

----------------------------开启压缩模块-------------------------------    
   
    gzip on;                 * 开启压缩
    gzip_http_version 1.1;   * 版本协议
    gzip_comp_level 2;       * 压缩级别(1-9)1最快压缩率最低,9最慢压缩率最大  
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
                             * 需要压缩的内容类型
    gzip_static on;          * 静态压缩(开)
  

}

6.页面缓存

配置在 location 里

        location / {
                root /gcqlinux;
                index index.html;

----------------页面缓存开启------------------------
                expires 24h;    * 该页面缓存24h,过期需重新请求
 
}

7.防盗链

--------------------------------------------防盗链&白名单--------------------------------------------------

valid_referers none blocked *.gcqlinux.com  server_name 192.168.105.* ~\.google\.  ~\.baidu\. ;         

-------------------------------------------------------------------------------------------------------------------

if ($invalid_referer){
return 403;
}

解释:valid_referers none blocked *.gcqlinux.com

1.关闭可引用,锁住*(所有的)gcqlinux.com ;

解释:server_name 192.168.105.* ~\.google\.  ~\.baidu\.

2.设置白名单:192.168.105网段下的所有ip、以~\.google\. 和 ~\.baidu\. 结尾的域名(可访问)

解释:if ($invalid_referer){
           return 403;
           }
 

3.这并不属于防盗链内容,而是设置不被允许访问的ip跳转403


七、Nginx 访问限制(应对泛洪攻击)

7.1  限制请求频率(限流):

定义限制区域:

http {

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;        * 1

location {

limit_req zone=addr burst=5 nodelay;                                                  * 2

写法: 

http {
---------------------------1.-----------------------------------  
    # 定义请求限制区 
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;  

 
    #limit_req_zone $binary_remote_zone zone=one:10m rate=1r/s; (另一种写法) 
-----------------------------------------------------------------
  
    server {  
        listen 80;  
        server_name gcqlinux.com;  
  
        location / {  
-----------------------------2.----------------------------------
            # 应用请求限制区,并设置突发请求数和是否延迟处理  
            limit_req zone=one burst=5 nodelay;  
----------------------------------------------------------------  

            # 其他配置...  
        }  
    }  
}

7.1.1  limit_conn_zone 指令

定义区域和参数:

  • limit_conn_zone这个指令用于定义一个请求限制区域(one),并设置其参数(如下):
  • $binary_remote_addr:这是用作键(key)的变量,用于唯一标识请求。这里使用客户端的IP地址的二进制形式,以减少内存占用。
  • $binary_remote_zone :也是用作键(key)的变量,但并不是 Nginx 内置的标准变量,通常是在某个特定的 Nginx 配置或模块中定义的自定义变量,在标准 Nginx 配置中常见使用的是以 $binary_remote_addr 作为键。
  • zone=one:10m:定义了一个名为  one 的区域,并为其分配了10MB的内存。这个内存用于存储请求的计数和频率信息。
  • rate=1r/s:设置了这个区域中每个唯一键的请求速率限制为每秒1个请求。

7.1.2  limit_req 指令

定义限制请求的频率,限制请求频率

  1. 防止服务器受到过快的请求攻击(如洪水攻击)或因为过高的请求负载而崩溃。limit_req 指令通常与 limit_req_zone 指令一起使用,后者用于定义限制请求速率的区域和参数。
  2. 这段代码定义了一个名为  one 的请求限制区域,限制每个IP地址每秒只能发送1个请求,超过后将被限制。burst=5表示允许超过限制的请求数有5个缓冲,nodelay表示不延迟处理请求。 

 7.2  限制并发连接数:

应用连接限制:

http {

limit_conn_zone $binary_remote_addr zone=addr:10m;         * 1

location {

limit_conn addr 1;                                                                        * 2

写法: 

http {  
--------------------------1.---------------------------
    # 定义并发连接限制区  
    limit_conn_zone $binary_remote_addr zone=addr:10m;  
-------------------------------------------------------

    server {  
        listen 80;  
        server_name gcqlinux.com;  
  
        location / {  
---------------------------2.----------------------------
            # 应用并发连接限制区,并设置最大并发连接数  
            limit_conn addr 10;  
---------------------------------------------------------
  
            # 其他配置...  
        }  
    }  
}

7.2.1  limit_conn_zone 指令

这个指令用于定义一个请求限制区域(addr)及参数

  • limit_conn_zone :指令用于定义一个“连接限制区域”(connection limit zone),它允许您为特定的键(在这个例子中是 $binary_remote_addr,即客户端 IP 地址的二进制形式)设置内存区域和大小。
  • $binary_remote_addr :是变量,用于唯一标识每个客户端。使用二进制形式可以减少内存使用。
  • zone=addr:10m :指定了区域的名称为 addr,并为其分配了 10MB 的内存。这个内存用于存储每个键(即每个 IP 地址)的当前并发连接数。
  • limit_conn在  server  或  location  块中使用 用于应用连接限制。

7.2.2  limit_conn 指令

应用了的连接限制区域 addr ,并设置限制每个IP地址的最大并发连接数为10 

  1. limit_conn 指令用于在特定上下文(如 location 块)中限制并发连接数。
  2. addr 是之前通过 limit_conn_zone 指令定义的区域名称。
  3. 10 是允许的每个键(在这个例子中是每个 IP 地址)的最大并发连接数。

7.3  总结

limit_req:限制的是请求(request)的频率,通常需要在http块使用 limit_req_zone 指令来定义一个限速区域

limit_conn:限制的是并发连接(connection)的数量,同样需要在http块用 limit_conn_zone 指令来定义一个连接限制区域,


八、Nginx 访问控制

8.1基于主机ip

http {  
    # 创建一个黑名单文件来存储要拒绝的 IP 地址  
    include blacklist.conf;  
  
    server {  
        listen 80;  
        server_name gcqlinux.com;  
  
        location / {  
            deny 192.168.1.100;  # 拒绝单个 IP 地址  
            deny 192.168.1.0/24; # 拒绝 IP 地址段  
  
            allow all;           # 允许所有其他 IP 地址  
  
            # 其他配置...  
        }  
    }  
}

配置语法

  • allow address | CIDR | unix::允许指定的IP地址、CIDR地址范围或Unix域套接字访问。
  • deny address | CIDR | unix::拒绝指定的IP地址、CIDR地址范围或Unix域套接字访问。

注意:allowdeny指令是按顺序检查的,一旦匹配到allowdeny,就不会再检查后续的指令。因此,在配置时需要注意指令的顺序(即第一个优先级最高)

8.2基于用户

8.2.1  建立认证文件

yum install -y httpd-tools                        * 安装密钥工具(tool),生成秘钥的工具 
                                                    由apache提供

htpasswd -cm /etc/nginx/conf.d/passwd user10      * c创造passwd文件、m加密会话密码

htpasswd -m /etc/nginx/conf.d/passwd user20       * m加密会话密码


cat /etc/nginx/conf.d/passwd                      * 观察口令文件是否生成。已生成
# 口令如下:
    user10:$apr1$UE/tLtDM$nVm686kAMYb/ArqQDUi8U/ 
    user20:$apr1$bmn0E/gK$enkXKb2V5uFvUy9wdIHlP.

如果你还没有passwd文件,你可以使用htpasswd工具来创建它,这个命令会创建passwd文件(如果它不存在的话),并提示你为myuser用户输入密码。-c选项表示创建一个新文件。如果你需要添加更多用户到同一个文件,不要使用-c选项,否则它会覆盖现有文件:确保Nginx有权限读取passwd文件 

用户(user10)加密(密码)成功 :

8.2.2  启用控制

  • vim /etc/nginx/conf.d/default.conf

auth_basic "nginx access test!";
auth_basic_user_file /etc/nginx/conf.d/passwd;

写法:

location /protected/ {  

    auth_basic "Welcome!";                          * 1
    auth_basic_user_file /etc/nginx/conf.d/passwd;   * 2

}
  1. 用户试图访问受保护的资源时,浏览器会弹出一个认证框,标题为“Welcome!”,要求用户输入用户名和密码。
  2. 指定了存储用户名和密码的文件路径。Nginx将读取这个文件来验证用户输入的用户名和密码是否正确。

设置完毕后用户需输入密码登录访问:

输入用户名/密码,成功访问

不输密码,认证失败: 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值