综合架构web服务之nginx详解_综合架构web 服务nginx详解

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

前言

如果你听说或使用过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.conf | nginx 主配置文件 |
    | /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的别名

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

s.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的别名
> 
> 


### 给大家的福利


**零基础入门**


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


![](https://img-blog.csdnimg.cn/img_convert/95608e9062782d28f4f04f821405d99a.png)


同时每个成长路线对应的板块都有配套的视频提供:


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a91b9e8100834e9291cfcf1695d8cd42.png#pic_center)


因篇幅有限,仅展示部分资料

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-mF18cHZu-1713638610470)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx的try_files指令用于在处理请求时进行文件查找并执行不同的操作。它的语法如下: ``` try_files file ... uri; ``` 其中,`file`是要查找的文件路径,可以是绝对路径或相对路径。`uri`是要重写的URI或转发的URI。 当接收到一个请求时,Nginx会按照try_files指令中的顺序依次查找文件。如果找到了指定的文件,Nginx会返回该文件的内容。如果找不到文件,则会将请求重写为指定的URI,并继续查找。如果最后一个URI也找不到文件,则会返回404错误页面。 举个例子,假设我们有一个目录结构如下: ``` - /var/www/html/ - index.html - images/ - logo.png ``` 我们可以使用try_files指令来配置Nginx: ``` location / { try_files $uri $uri/ /index.html; } location /images/ { try_files $uri $uri/ =404; } ``` 在上面的配置中,如果请求的URI匹配到`/images/`,Nginx会先尝试查找该URI对应的文件。如果找到了文件,比如`/images/logo.png`存在,则会返回该文件。如果找不到文件,则会继续尝试查找`/images/logo.png/`这样的目录。如果目录也不存在,则会返回404错误。 对于其他请求,比如`/about`,Nginx会先尝试查找该URI对应的文件。如果找到了文件,比如`/var/www/html/about`存在,则会返回该文件。如果找不到文件,则会继续尝试查找`/var/www/html/about/`这样的目录。如果目录也不存在,则会返回`/var/www/html/index.html`文件的内容。 总之,try_files指令提供了一种方便的方式来处理文件查找和请求重写,使得我们能够更灵活地配置Nginx的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值