手机版

百科生活 投稿

rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

百科 2026-02-19 08:38:22 投稿 阅读:6880次

关于【rewrite攻略】:rewrite攻略(rewrite攻略顺序),今天涌涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、Nginx通关攻略
  • 2、rewrite攻略(rewrite攻略顺序)
  • 3、rewrite建议攻略顺序
  • 4、rewrite中文攻略
  • 5、Rewrite千里朱音攻略
  • 6、问一下rewrite的攻略顺序

1、Nginx通关攻略

  • 应用层使用HTTP协议。
  • HTML文档格式。
  • 浏览器统一资源定位器(URL)。

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等,但是不支持 java。Java 程序一般都通过与 Tomcat 配合完成。

作为一名Java猿帅,肯定要理解下Nginx和Tomcat的区别了:

Nginx、Apache和Tomcat

  • Nginx—— 由俄罗斯程序员Igor Sysoev所开发的轻量级、高并发HTTP服务器;
  • Apache HTTP Server Project,一个Apache基金会下的HTTP服务项目,和Nginx功能类似;
  • Apache Tomcat ,则是Apache基金会下的另外一个项目,是一个Application Server,更准确的说是一个servlet应用容器,与Apache HTTP Server和Nginx相比,Tomcat能够动态的生成资源并返回到客户端;

Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容);

一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。

而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的运行(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。

1.3 正向代理

正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

正向代理“代理”的是客户端

比如在家办公期间,需要连公司的 VPN 办公,这个就是所谓的”正向代理“。还有我们访问 google也是。

rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

1.4 反向代理 与 负载均衡

反向代理正好与正向代理相反,反向代理是指以代理服务器来接收Internet上的连接请求,然后将请求转发到内部网络上的服务器,并将服务器上得到的结果返回给客户端,此时代理服务器对外表现就是一个服务器,客户端对代理是无感知的。

反向代理“代理”的是服务端

再比如,你想本本分分的在“优酷”上看个“爱情片”,youku.com会把你的请求分发到存放片片的那台机器上,这个就是所谓的”反向代理“。

rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

为什么使用反向代理

  • 保护和隐藏原始资源服务器
  • 加密和SSL加速
  • 通过缓存静态资源,加速Web请求
  • 实现负载均衡

负载均衡

地址重定向

Nginx 的Rewrite主要的功能就是实现URL重写

比如输入360.com 跳转到了360.cn,baidu.cn跳转到了baidu.com

1.5 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。 这里指的就是让动态程序(Java、PHP)去访问应用服务器,让缓存、图片、JS、CSS等去访问Nginx。


2. Nginx 安装

  1. 下载Nginxwget http://nginx.org/download/nginx-1.16.1.tar.gz
  2. 安装需要编译的插件yum install gcc c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel
  • 用于编译c、c++代码的GCC;
  • 用c语言编写的正则表达式函数库Pcre(使用rewrite模块);
  • 用于数据压缩的函式库的Zlib;
  • 安全套接字层密码库OpenSSL(启用SSL支持)
  • 解压、配置(Nginx支持各种配置选项,文末一一列出 Nginx配置选项 )、编译、安装nginxtar -zxvf nginx-1.15.tar.gz cd nginx-1.16.1 cd nginx-1.16.1 ./configure make && sudo make install
  • 启动、重启、关闭cd /usr/local/nginx/ cd sbin ./nginx #关闭命令 ./nginx -s stop #重启,热部署 ./nginx -s reload #修改配置文件后也别嘚瑟,反正我会动不动就写错,检查修改的nginx.conf配置是否正确 ./nginx -t
  • 验证(浏览器输入ip)

  • 3. 配置文件

    nginx.conf 配置文件主要分为三部分:全局块、events块、https块。

    Nginx配置语法:

    • 配置文件由指令和指令块构成
    • 每条指令以分号(;)结尾,指令和参数间以空格符分隔
    • 指令块以大括号{}将多条指令组织在一起
    • include语句允许组合多个配置文件以提高可维护性
    • 使用 # 添加注释
    • 使用 $ 定义变量
    • 部分指令的参数支持正则表达式

    3.1 全局块

    全局配置部分用来配置对整个server都有效的参数。主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。 示例:

    user nobody;worker_processes 4;error_log /data/nginx/logs/error.log notice;

    3.2 events 块

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

    events {#每个 work process 支持的最大连接数为 1024. worker_connections 1024;}

    3.3 http 块

    这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。 需要注意的是:http 块也可以包括 http 全局块、server 块。

    3.3.1 http 全局块

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

    http { include mime.types; default_type application/octet-stream;sendfile >

  • 启动一个 tomcat,浏览器地址栏输入 127.0.0.1:8080,出现如下界面
  • rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    1. 通过修改本地 host 文件(C:\Windows\System32\drivers\etc),添加127.0.0.1 www.12345.com将 www.12345.com 映射到自己的机器ip上
    2. 配置完成之后,我们便可以通过 www.test.com:8080 访问到第一步出现的 Tomcat 初始界面。那么如何只需要输入 www.12345.com 便可以跳转到 Tomcat 初始界面呢?便用到 nginx 的反向代理。
    3. 修改nginx.conf 配置文件,增加如下配置 proxy_pass

    server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8080; }

    1. 如上配置,我们监听 80 端口,访问域名为 www.12345.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。在浏览器端输入 www.12345.com 结果如下:

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    4.2 反向代理demo2

    实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

    访问 http://127.0.0.1/java/ 直接跳转到 127.0.0.1:8080

    访问 http://127.0.0.1/egg/ 直接跳转到 127.0.0.1:8081

    1. 在服务器上起两个tomcat,修改其中一个端口号为8081; 在tomcat/webapps/目录下的各加两个文件夹,并随便写个html页面),我建的是java/index.html和egg/index.html
    2. 修改nginx.conf,在http块中添加serve{}server { listen 80; server_name localhost; location ~ /java/ { proxy_pass http://127.0.0.1:8080; } location /egg/ { proxy_pass http://127.0.0.1:8081; } }
    3. 重启nginx,验证效果

    4.3 Nginx 配置-负载均衡

    随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务。

    Nginx的负载均衡是proxy模块和upstream模块搭配实现的。upstream模块将会启用一个新的配置区段,在该区段定义了一组上游服务器。

    实现效果:配置负载均衡

    1. 同时启动两个Tomcat(为了方便验证效果,修改tomcat端口号的同时,顺便将Tomcat默认欢迎页面apache-tomcat-9.0.29/webapps/ROOR目录下的index.jsp修改下,看下8081欢迎页的“蛋蛋”没)
    2. 修改nginx.confhttp { upstream myserver { server localhost:8080; server localhost:8081; } server { listen 80; location / { proxy_pass http://myserver; } } }
    3. 重启nginx,验证效果(默认轮询的方式,每次打开新窗口,8080和8081会交替出现,同一个窗口的话需要关闭浏览器缓存)

    Nginx 分配策略:

    1. 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
    2. weight weight 代表权,重默认为 1,权重越高被分配的客户端越多 指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如: upstream server_pool{ server 192.168.5.21 weight=10; server 192.168.5.22 weight=10; }
    3. ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:upstream server_pool{ ip_hash; server 192.168.5.21:80; server 192.168.5.22:80; }
    4. fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。upstream server_pool{ server 192.168.5.21:80; server 192.168.5.22:80; fair; }

    4.4 Nginx 配置-动静分离

    Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大致分为两种, 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案; 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资 源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件, 不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送 一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304,如果有修改,则直接从服务器重新下载,返回状态码 200。

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    1. 服务器找个目录存放自己的静态文件
    2. 修改nginx.conf server { listen 80; server_name localhost; location /static/ { root /usr/data/www; } location /image/ { root /usr/data/; autoindex>
    3. 采用反向代理demo2中的例子,修改nginx.conf(只多加了一行rewrite)server { listen 80; server_name localhost; location /java/ { proxy_pass http://127.0.0.1:8080; rewrite ^/java /egg/ redirect; } location /egg/ { proxy_pass http://127.0.0.1:8081; } }
    4. ./nginx -s reload,验证效果(输入ip/java/被重定向到了egg)

    rewrite指令可以在server块或location块中配置,其基本语法结构如下:

    rewrite regex replacement [flag];

    • rewrite的含义:该指令是实现URL重写的指令。
    • regex的含义:用于匹配URI的正则表达式。
    • replacement:将regex正则匹配到的内容替换成 replacement。
    • flag: flag标记,flag有如下值:
      • last: 本条规则匹配完成后,继续向下匹配新的location URI 规则。(不常用)
      • break:本条规则匹配完成即终止,不再匹配后面的任何规则(不常用)。
      • redirect:返回302临时重定向,浏览器地址会显示跳转新的URL地址。
      • permanent:返回301永久重定向。浏览器地址会显示跳转新的URL地址。

    rewrite ^/(.*) http://www.360.cn/$1 permanent;

    4.6 Nginx 高可用

    如果将Web服务器集群当做一个城池,那么负载均衡服务器就相当于城门。如果“城门”关闭了,与外界的通道就断了。如果只有一台Nginx负载服务器,当故障宕机的时候,就会导致整个网站无妨访问。所以我们需要两台以上Nginx来实现故障转移和高可用。

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    配置高可用

    双机热备方案

    这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的备用状态,当一台服务器不可用另外一台就会顶替上去。

    keepalived是什么?

    Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件

    故障转移机制

    Keepalived高可用服务之间的故障切换转移,是通过VRRP 来实现的。 在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

    实现

    1. 准备两台安装Nginx和keepaliver(yum install keepalived -y)的服务器
    2. 修改两台服务器上的/etc/keepalived/keepalived.conf

    #主机

    #检测脚本

    vrrp_script chk_http_port {

    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动

    interval 2 #(检测脚本执行的间隔,单位是秒)

    weight 2 #权重

    }

    #vrrp 实例定义部分

    vrrp_instance VI_1 {

    state MASTER # 指定keepalived的角色,MASTER为主,BACKUP为备

    interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

    virtual_router_id 66 # 虚拟路由编号,主从要一直

    priority 100 # 优先级,数值越大,获取处理请求的优先级越高

    advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)

    #授权访问

    authentication {

    auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

    auth_pass 1111

    }

    track_script {

    chk_http_port #(调用检测脚本)

    }

    virtual_ipaddress {

    192.168.16.150 # 定义虚拟ip(VIP),可多设,每行一个

    }

    }

    # 备机

    #检测脚本

    vrrp_script chk_http_port {

    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动

    interval 2 #(检测脚本执行的间隔)

    weight 2 #权重

    }

    #vrrp 实例定义部分

    vrrp_instance VI_1 {

    state BACKUP # 指定keepalived的角色,MASTER为主,BACKUP为备

    interface ens33 # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡

    virtual_router_id 66 # 虚拟路由编号,主从要一直

    priority 99 # 优先级,数值越大,获取处理请求的优先级越高

    advert_int 1 # 检查间隔,默认为1s(vrrp组播周期秒数)

    #授权访问

    authentication {

    auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信

    auth_pass 1111

    }

    track_script {

    chk_http_port #(调用检测脚本)

    }

    virtual_ipaddress {

    192.168.16.150 # 定义虚拟ip(VIP),可多设,每行一个

    }

    }

    3.新建检测脚本(chmod 775 check_nginx.sh)

    #!/bin/bash

    #检测nginx是否启动了

    A=`ps -C nginx --no-header |wc -l`

    if [ $A -eq 0 ];then #如果nginx没有启动就启动nginx

    systemctl start nginx #重启nginx

    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重启失败,则停掉keepalived服务,进行VIP转移

    killall keepalived

    fi

    fi

    1. 启动Nginx和keepalived(systemctl start keepalived.service)
    2. 模拟Nginx故障(关闭主服务器Nginx),验证,仍可以通过配置的虚拟ip访问,ok

    5. Nginx 原理与优化参数配置

    Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    master-workers 的机制的好处

    1. 可以使用nginx-s reload 热部署
    2. 每个worker是独立的进程,不需要加锁,省掉了锁带来的开销。采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。

    需要设置多少个 worker

    Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是千上万个请求也不在话下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。

    #设置 worker 数量。 worker_processes 4 #work 绑定 cpu(4 work 绑定 4cpu)。 worker_cpu_affinity 0001 0010 0100 1000 #work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。 worker_cpu_affinity 0000001 00000010 00000100 00001000

    连接数 worker_connection

    这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数,应该是 worker_connections * worker_processes。当然,这里说的是最大连接数,对于 HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections * worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访 问最大并发数是: worker_connections * worker_processes /2,而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服 务的连接,会占用两个连接。

    Nginx请求处理流程

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)


    6. Nginx模块开发

    由于Nginx的模块化特性,所以可以支持模块配置,也可以自定义模块,Nginx的模块开发,程序员目前还不需要太深入

    Nginx模块分类

    rewrite攻略,rewrite攻略顺序(Nginx通关攻略)

    Nginx配置选项

    解压nginx后的配置操作示例

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre --with-http_ssl_module

    选项解释--prefix=Nginx安装的根目录,所有其他安装路径都要依赖于该选项--sbin- path=指定Nginx二进制文件的路径--conf-path=指定nginx.conf配置文件的路径--error-log- path=指定错误文件的路径--user=nameworker进程运行的用户--group=worker进程运行的组--with-http_ssl_module使用https协议模块。默认情况下该模块没有被构建。前提是openssl与openssl-devel已安装--with-http_image_filter_module该模块被用作图像过滤器使用,将图像投递给客户前先进行过滤(需要libgd库)--with-http_stub_status_module启用这个模块会收集Nginx自身状态信息,常用来做监控--with-mail启用mail模块,默认没有被激活--without-http_autoindex_module禁用:如果一个目录没有index文件,该模块能收集文件并列出--add-module=添加第三方外部模块,每次添加新的模块都要重新编译

    参考:

    《Nginx核心知识100讲》 《精通Nginx》 https://juejin.im/post/5c1616186fb9a049a42ef21d 《尚硅谷Nginx》

    44、rewrite攻略(rewrite攻略顺序)

    rewrite攻略顺序问题

      key社的rewrite,如果没过小鸟线强行攻略静流线(或没过千早线强行攻略。会发生什么?这种情况根本不存在,这两个都是剧情锁关系,比如不通关小鸟线就无法进入静流线,强行攻略是不可能的

    45、rewrite建议攻略顺序

      小鸟线已经通了,感觉有点难理解(世界观太庞大)。我下一个该通静流还是。我当初是按小鸟—静流—露西亚—千早—朱音的顺序跑的。因为只有通完小鸟线才会开启静流 线,说明两条线之间有一定的联系,所以小鸟线后就是静流线比较好_(:з」∠)_其实露西亚线和别的线没什么关系,放到什么时候玩。

    46、rewrite中文攻略

      http://jackycally.blog.163.com/blog/static/16774041020124142638595/

    47、Rewrite千里朱音攻略

      朱音线(千早End后)【load1】世界(朱音线开启)10月14日再次恳求10月16日去哪里的心情也没有啊10月25日留在这里(确定进入朱音线)10月27日不需要朱音End 以上全End完成后,标题画面点击Moon,进入Moon线(无选项) 。

    48、问一下rewrite的攻略顺序

      刚下到rewrite时,以为会和clannad一样,各个女主角攻略顺序怎样都可以。要攻略静流线也必须先攻小鸟线,要攻略朱音线必须先攻千早线,露西亚线随时都可攻略 5个女主全通就会出MOON线,最后是TERRA线(不过好像还有几个恶搞性质的线)

    本文关键词:rewrite攻略中save分别在哪里,rewrite攻略图,rewrite攻略选项,rewrite攻略 人物顺序,rewrite攻略小鸟线。这就是关于《rewrite攻略,rewrite攻略顺序(Nginx通关攻略)》的所有内容,希望对您能有所帮助!

    本文链接:https://bk.89qw.com/a-383140

    最近发表
    网站分类