综合架构——网站服务

综合架构——网站服务

第一节课

1.用户访问网站的流程

​ 输入域名
​ DNS域名解析
​ 建立连接TCP三次握手
​ 发送HTTP请求报文
​ 发送HTTP响应报文
​ 释放连接TCP四次挥手

2.HTTP报文——请求报文、响应报文

HTTP请求报文
image-20201021005621723
HTTP响应报文

详见:18 HTTP报文.xmind

3.状态码信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pgL3XgKd-1604670753034)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021005701038.png)]

4.URL和URI

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioEPBxET-1604670753041)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021005714044.png)]

5.请求访问的资源信息:静态资源、动态资源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-stAtcngR-1604670753044)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021005744349.png)]

伪静态:可以便于搜索引擎收录,也有数据库服务支持,实现交互,本质上仍为动态。

6.网站优劣测评方法和依据

  • 根据用户IP地址数量进行统计:仅作参考,由于NAT,网站服务器只能记录一个公网IP

  • PV:页面访问量。

  • UV:记录独立访客数量
      Cookie:标识用户身份信息,会保存在用户客户端本地
         Session:记录用户用户的一些会话操作,记录在服务器中,eg:记录用户登录信息
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrYjwABr-1604670753050)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021005800380.png)]

客户端访问过某个网站后会产生一个cookie,如同在网站上办了个会员卡,在这个会员卡中会产生交互信息记录,比如此网站上访问了什么页面,下载了什么图片;同时服务端的Session中会存放所有客户端会员及记录信息。

7.网站的并发

网站服务器在单位时间内能够处理的最大连接数;

8.常用的网站服务

静态:Apache(httpd)、Nginx
动态:PHP、Tomcat、Python

 

第二节课

〇、简介

  1. nginx网站服务的特点
    
  2. nginx服务部署安装
    
  3. nginx目录结构介绍(站点目录)
    
  4. nginx配置文件默认参数说明
    
  5. nginx实现简单网络搭建
    
  6. nginx服务一些常用应用(模块功能)
    

 

一、nginx特点

  • 高并发(特别是静态资源)、占用系统资源少

  • 不仅可以提供web服务,还可以提供负载均衡和缓存服务;

  • 可以部署在多种操作系统上,平台可移植性强。

  • nignx实现网络通讯时使用的是异步网络IO模型:epoll模型,Apache使用select模型;(决定了为什么Apache不如nignx)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSSuZdBI-1604670753053)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021010044758.png)]

epoll模型:宿舍管理员
你去找女朋友,查看人员登记信息表——回调

select模型:宿舍管理员
你去找女朋友,宿管带你一个一个房间去找——线性轮询

二、nginx安装

1.yum安装:【推荐使用官方yum源安装】
  • 更新官方yum源:http://nginx.org/en/linux_packages.html#RHEL-CentOS

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Svc4iFWN-1604670753056)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021010141061.png)]

  • 安装与启动:
    yum install -y nginx
    systemctl start nginx
    systemctl enable nginx
    
  • 安装与启动:本地浏览器输入web服务器的IP地址。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8aLXW4z-1604670753058)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021010246616.png)]

2.编译安装
  • 在nginx.org官网查找stable版本,右键复制其链接;
  • 下载源码包:wget http://nginx.org/download/nginx-1.18.0.tar.gz

    PS:软件的依赖:

    yum install -y  penssl-devel
    yum install -y pcre-devel
    
  • 解压tar xf nginx-1.18.0.tar.gz并进入目录中;
  • 编译安装三部曲:

    ①进行配置操作——./configure

       --prefix=PATH            #设置程序的安装路径
       --user=USER              #设置一个虚拟用户管理worker进程(出于安全角度)
       --group=GROUP            #设置一个虚拟用户组…

      ②进行软件的编译过程——make
将高级语言编写的源文件–>编译–>系统能够识别的机器语言
      ③编译安装过程——make install

 

三、查看软件的目录结构:rpm -ql nginx

目录说明
/etc/logrotate.conf
/etc/logrotate.d/xxx
实现nginx日志文件定时切割处理
切割处理子配置文件
/etc/nginx/nginx主配置文件
/usr/sbin/nginx命令文件
/usr/share/nginx/html站点目录
/var/log/nginx日志文件
/etc/nginx/mime.types定义nginx可以识别的语言等内容,如html、css、js

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2hbPJRi-1604670753061)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021105230419.png)]

1. 利用专用文件切割程序——logrotate
[root@web01 ~]# vim /etc/logrotate.conf

#see "man logrotate" for details
#定义切割周期:daily、weekly、monthly
weekly

#定义保留几个切割后的文件
rotate 4

#create new (empty) log files after rotating old ones   
#切割完创建一个源文件,不能说切割后,原始文件没有了,必须要创建出一个源文件来记录后面更新的日志信息
create

#定义脚标:如secure文件切割后生成secure202010
dateext		#date extend

#uncomment this if you want your log files compressed
#切割后是否进行压缩处理,默认注释不压缩;
#compress

#加载包含/etc/logrotate.d/目录中文件配置(子配置文件)
include /etc/logrotate.d

#单独对某个文件进行切割配置(局部模块)
/var/log/wtmp {
    monthly
    create 0664 root utmp
    minsize 1M				#最小起码达到1M才切割
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmbzfGPi-1604670753062)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021101156813.png)]

2.nginx服务配置文件

/etc/nginx/nginx.conf 主配置文件

[root@web01 nginx]# cat nginx.conf
--------------------- 第一部分:核心主区域 -------------------------------
user  nginx;					#定义worker进程的管理用户
worker_processes  1;			#定义有几个worker进程,越多则并发能力越强,但并不是无限设定的,一般等于服务器CPU的核数
error_log  /var/log/nginx/error.log warn;	#定义错误日志
pid        /var/run/nginx.pid;				#定义文件pid路径信息,systemctl判断是否已经启动,就是根据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;
    keepalive_timeout  65;			#超时时间,一个连接持续65秒没有数据传输,则释放连接
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;    #加载虚拟主机扩展配置文件
}

PS:nginx的进程

master process:主进程,管理服务是否能够正常运行(boss)

worker process:工作进程,处理用户的访问请求(employee)

所以kill进程的时候,只要不kill主进程,nginx会一直运行。

/etc/nginx/mime.types

当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,再根据MIME Type设置HTTP Response的Content-Type,然后浏览器根据Content-Type的值处理文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4crMgjWN-1604670753063)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021195009257.png)]

/etc/nginx/conf.d/default 虚拟主机配置文件

配置一个www站点、bbs站点、blog站点,即一个虚拟主机;

[root@web01 ~]# vim /etc/nginx/conf.d/default.conf

--------------------- 第四部分:Server区域 -------------------------------
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;
    }
}

第三节课

一、nginx服务一些常见应用(模块功能)

1.利用nginx服务搭建一个网站

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

注意分号结尾,不存在冒号!

[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# vim www.conf

server{
    listen  80;
    server_name  www.loto.com;
    location / {
        root /usr/share/nginx/html;
        index helloworld.html;
    }   
} 

理解location

location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。

客户端访问www.loto.com的时候,浏览器会自动转换为http://www.loto.com/;location设为“/”,nginx会自动去找/模块;

如果location配置为/loto,客户端使用www.loto.com,表示想要去找匹配/模块,而配置文件中不存在,所以报错404;

(也就是匹配URI)

www.conf文件中,指明了访问loto.com域名中的www虚拟主机,而location则是用于与用户输入的URI进行匹配;

如:用户输入www.loto.com,则去匹配www主机中的location /,然后获取页面

用户输入www.loto.com/shop,则去匹配www主机中的location /shop ,然后获取页面,但必须在站点目录下有shop目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3mDkXWK0-1604670753065)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201021235421781.png)]

**第二个里程:**进入站点目录部署代码

[root@web01 ~]# cd /usr/share/nginx/html
[root@web01 html]# vim helloworld.html
#xxxxxxxxx html代码

**第三个里程:**重启nginx

[root@web01 html]# nginx -t			#检查语法
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 html]# systemctl reload nginx

**第四个里程:**模拟配置DNS解析

打开Windows,C:\Windows\System32\drivers\etc\hosts

添加10.0.0.7 www.loto.com

**第五个里程:**测试

2.利用nginx服务搭建多个网站
  1. 首先在html目录下创建多个站点目录:/html/www /html/bbs /html/blog

  2. 在每个站点目录下添加index文件

  3. 编辑虚拟主机配置文件:在/etc/nginx/conf.d/目录下,添加www.conf bbs.conf blog.conf

    server{
        listen  80;
        server_name  bbs.loto.com;
        location / {
            root /html/bbs;
            index index.html;
        }
    }
    
    server{
        listen  80;
        server_name  blog.loto.com;
        location / {
            root /html/blog;
            index index.html;
        }
    }
    
    server{
        listen  80;
        server_name  www.loto.com;
        location / {
    	root /html/www;
    	index index.html;
        }
    }
    
  4. 编写DNS配置文件

    Linux或Windows中修改hosts文件:10.0.0.7 www.loto.com bbs.loto.com blog.loto.com

  5. 重启服务

  6. 访问测试——虚拟主机访问方式

    • 使用域名访问

    • 使用IP地址访问

      问题1:使用10.0.0.7访问,结果跳转的是bbs界面,如何常规的跳转至www界面呢?

      使用ll命令查看/etc/nginx/conf.d/目录,会发现列出的配置文件中,bbs排在第一位;nginx服务运行时,会在/etc/nginx/nginx.conf配置文件中执行到include语句,链接加载/etc/nginx/conf.d/目录下的子配置文件,所以第一个被加载的即bbs。因此,只需要在/etc/nginx/nginx.conf的include语句前,加上include /etc/nginx/conf.d/www.conf即可。

      一台web服务器可能有多个IP地址,可以通过10.0.0.7访问,也可以通过172.16.1.7访问;可以在conf配置文件中添加listen语句实现只能通过指定的端口访问主机;如listen 10.0.0.7:80;

    • 通过域名访问

二.页面访问原理

  1. DNS解析 www.loto.com -->> 10.0.0.7

  2. 建立TCP三次握手:IP地址+端口号

  3. 客户端发出HTTP请求报文

    请求报文有host字段:www.loto.com

    和端口字段:80

  4. 没有找到相同域名的虚拟主机文件后,会去匹配端口号

  5. 显示主机的网站页面

三.企业中网站的安全访问控制

1.根据用户访问的地址进行控制

对于www.loto.com/AV,实现内网用户可以访问,外网用户不能访问;

image-20201023180531951

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jum2Ezct-1604670753066)(C:\Users\西泽Xiz\AppData\Roaming\Typora\typora-user-images\image-20201023180808541.png)]

2.根据用户访问进行认证
  1. nginx认证模块:ngx_http_auth_basic_module
#Example:
location / {
	auth_basic		"closed site";			#开启认证功能
	auth_basic_user_file conf/password;		#密码文件
}
  1. 编写虚拟主机配置文件:
location /AV {
    root /html/www;
    index index.html;
    auth_basic "loto";				#引号内容起到提示作用,无所谓,重点要写上auth_basic;
    auth_basic_user_file password/htpasswd;		#建议使用相对路径
}
  1. 创建密码文件——htpasswd命令
  • htpasswd参数说明
参数说明
-c Create a new file.创建一个密码文件
-b Use the password from the command line rather than prompting for it.免交互方式,输入密码信息。
  • 秒交互创建密码文件
[root@web01 password]# htpasswd -bc ./htpasswd loto 123456
Adding password for user loto
[root@web01 password]# cat htpasswd 
loto:$apr1$8NKzToCA$c/uaRfipPlnNZwj8.6sEE0
  • 重启服务。

密码文件的权限问题

当密码文件的权限被设置为600时,访问www.loto.com/AV时,报错如下:

image-20201028181035024

原因分析:

image-20201028181755524

用户访问web服务器时,admin身份会在服务端被转换为虚拟用户nginx;访问/AV目录的时候,还需要去请求认证。但是对于服务端文件而言,属主属组默认情况下均为root;nginx用户对于此文件来说,属于“其他人”,且权限为0;所以会报错;

image-20201028182904890

解决方法:

chown nginx htpasswd

或者不修改属主,将“其他人”的权限设为可读:chmod o+r htpasswd

第四节课

一、利用nginx服务搭建网站文件共享服务(网站页面索引目录)

编写配置文件mirrors.conf

使用的模块:ngx_http_autoindex_module

server {
  listen 80;
  server_name mirrors.loto.com;
  location /{
    root /html/mirrors;
    index nothing.html;		#必须要指定一个不存在的index
    autoindex on;			#核心
  }
}
image-20201028234133075

站点中放置的iso文件,点击后会自动下载;txt文件会自动进入查看其文本内容;

那如何使txt文件也下载呢?

将mime.types媒体资源类型文件中的“txt”删除,使得其不知道txt对应的是何种文件类型,从而默认下载;

mime.types文件的作用:

文件中有的扩展名信息资源,进行访问时会直接看到数据内容;

文件中没有扩展名信息资源,进行访问时会直接下载资源。

二、页面字符修改(乱码问题)

www.loto.com/AV

image-20201029131819378

解决方法:

在配置文件中加入charset utf-8即可。

image-20201029132039387

三、网站别名功能

image-20201029133955755

四、监控功能

状态模块:ngx_http_stub_status_modules

  1. 编写配置文件
[root@web01 conf.d]# vim state.conf

server{
    listen 80;
    server_name state.loto.com;
    stub_status;		########重点
}
  1. 添加hosts解析信息

  2. 重启并测试

image-20201029135413487
  • Active connections:激活连接数。

    image-20201029135537036
  • accepts:接收的TCP连接数汇总。

  • handled:处理的TCP连接数汇总。

    通常,accepts和handled的值都是相同的,用户发送一个请求,服务器处理一个请求。但是当服务器端资源受限时(比如进程连接数受限),会出现两值不相等的现象。

    nginx服务端总共最大能处理的并发连接数=worker进程数×worker连接数,如果其总值为4096,当第4097个连接请求发送过来时,服务器无法处理,会出现accepts=4097,handled=4096.

    image-20201029140722015
  • request:总计的HTTP请求数量。

    当使用TCP长连接的时候,request的值一般都大于accepts和handled,因为一个TCP连接可以处理多个HTTP请求。

    当使用TCP短链接的时候,三个值一般都是相同的。

    如何指定使用长连接或短链接?

    修改主配置文件/etc/nginx/nginx.conf,将其值置为0即可。

    image-20201029142003280
  • Waiting:等待队列中的请求数。

五、错误日志

错误日志:/var/log/nginx/error.log

在nginx主配置文件中,可以设定不同的错误级别,根据不同的级别定义error.log中所记录的信息;共有如下几个级别,从debug开始,问题严重性逐渐递增,相对应所记录的信息逐渐递减;如:debug级别会记录状态信息和错误信息,而当设定为emerg级别的时候,只有当服务瘫痪的时候,才会将错误记录在日志中。

所以比较建议使用warn或者error级别。

如何设定错误级别?

修改nginx主配置文件:error_log /var/log/nginx/error.log warn;

错误级别

错误级别说明信息
debug调试级别,服务运行的状态信息和错误信息会详细显示
info信息级别,只显示重要的运行信息和错误信息
notice通知级别,更加重要的信息进行通知说明
warn ★推荐警告级别,可能出现了一些错误信息,但不影响服务运行
error ★推荐错误级别,服务运行出现了错误,需要纠正
crit严重级别,必须修改调整
alert严重警告级别,即警告且必须修正错误
emerg灾难级别,服务不能正常运行了。

六、访问日志

  1. 访问日志:/var/log/nginx/access.log

  2. nginx主配置文件中关于访问日志的模块信息:

        #定义日志模板
        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;
    
  3. 默认配置下,所有站点的访问信息全部都存放在access.log目录中,为了方便起见,可以将主配置文件中的access_log /var/log/nginx/access.log main;写入单独的配置文件中。

    如:www.conf中加入/var/log/nginx/access_of_www.log main;

    bbs.conf中加入/var/log/nginx/access_of_bbs.log main;

  4. 模板格式:

    10.0.0.2 - loto [29/Oct/2020:13:20:20 +0800] "GET /AV/ HTTP/1.1" 200 237 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" "-"
    
    模板中的变量例子含义
    $remote_addr10.0.0.2显示用户访问源IP地址信息
    $remote_userloto显示认证的用户信息,设置auth认证了才会有
    $time_local29/Oct/2020:13:20:20 +0800访问时间
    $request“GET /AV/ HTTP/1.1”请求报文的请求行信息
    $status200状态码信息
    $body_bytes_sent237响应的数据包大小,可用此统计消耗流量
    $http_referer-从主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。可以防止盗链
    $http_user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36记录用户使用的客户端软件
    $http_x_forwarded_for负载均衡

    盗链行为

    image-20201029180656082

    第三方网站oldman中需要某些资源,而这些资源在oldboy网站中已经有了。oldman在页面代码中直接使用src链接到oldboy的资源。用户最终访问的还是oldboy的资源。且耗费下载的数据信息,耗费的也是oldboy的资源;

    即:oldboy为oldman做了件漂亮的嫁衣,且用户以为这些东西都是oldman的。

  5. 日志格式优化

    中文格式化:

    log_format style    '客户源地址:$remote_addr       认证用户信息:$remote_user      访问时间:$time_local'
                        '请求行信息:$request           状态码信息:$status'            
                        '响应数据包大小:$body_bytes_sent'
                        '调用链接信息:$http_referer    负载均衡信息:$http_x_forwarded_for'
                        '客户端软件信息:$http_user_agent';
    

    格式应用:

    vim www.conf
       access_log /var/log/nginx/access_of_www.log style;
    vim bbs.conf
       access_log /var/log/nginx/access_of_bbs.log style;
    vim bbs.conf
       access_log /var/log/nginx/access_of_bbs.log style;
    vim bbs.conf
       access_log /var/log/nginx/access_of_bbs.log style;
    vim bbs.conf
       access_log /var/log/nginx/access_of_bbs.log style;
    .........
    

七、优雅显示界面

location /{
	root /html/www
	error_page 404 /404.jpg		###重点
}

八、location详解

Syntax:	location [ = | ~ | ~* | ^~ ] uri { ... }
		location @name { ... }
Default:	—
Context:	server, location
location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

The “/” request will match configuration A, the “/index.html” request will match configuration B, the “/documents/document.html” request will match configuration C, the “/images/1.gif” request will match configuration D, and the “/documents/1.jpg” request will match configuration E.

九、利用nginx实现页面跳转功能

image-20201029233943896

利用rewrite实现 loto.com ------> www.loto.com

#########################    这样是存在问题的     ##########################
#用户通过loto.com来访问之后,会执行rewrite,告诉客户端loto.com已经跳转至www.loto.com
#客户端浏览器会再通过www.loto.com访问,客户端还会执行rewite,告诉已经跳转至www.loto.com
#入此反复,产生死循环。
#因为server_name中www.loto.com和loto.com写在了一块,不论是www.loto.com来访,还是loto.com,都会要求跳转
server{
    listen  80;
    server_name  www.loto.com loto.com;  				#需要加入别名
    rewrite ^/(.*) http://www.loto.com/$1 permanent;	#核心,重写规则配置
    
    location / {
        root /html/www;
        index index.html;
    }
}

#解决方案一:在原链接的server标签之上,再添加一个server标签
server{
    server_name loto.com;
    rewrite ^/(.*) http://www.loto.com/$1 permanent;
}

#解决方案二:再server模块使用if判断 ★★★★
server{
    listen  80;
    server_name  www.loto.com loto.com;	  					#此处必须写上loto.com,否则会报错!!!!!
    access_log /var/log/nginx/access_of_www.log style;
    #$host指的是用户输入的网址;~*表示不区分大小写;^loto.com$表示以loto开头,com结尾;
    #如果用户访问所输入的网址,是以loto开头com结尾的,则跳转至www.loto.com
    if ($host ~* "^loto.com$") {							
        rewrite ^/(.*) http://www.loto.com/$1 permanent;
    }
  ...
}

^/:匹配URL

(.*):匹配URI

跳转方式:

永久跳转:permanent 301 会将跳转信息缓存至客户端本地

临时跳转:redirect 302 不会缓存跳转信息,每次都由nginx完成跳转

  1. 永久跳转与临时跳转
  • 永久跳转原理301:
image-20201030000119002
  • 临时跳转原理302:

    临时跳转不会将新的域名缓存至本地,每次都通过老域名访问服务器时,都由nginx服务器来完成新老域名的映射跳转;

  1. nginx的rewrite重写企业应用场景:
  • 可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。

  • 为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL伪装成静态地址提供服务。

  • 网站换新域名后,让旧域名的访问跳转到新域名上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值