nginx安装、调优、location匹配、rewrite、全局变量

本文详细介绍了Nginx的源码安装步骤,包括依赖包安装、用户创建、编译配置等,并深入探讨了Nginx的调优策略,如设置超时时间和location匹配规则,以及rewrite规则的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、nginx源码安装:

1、管网下载并解压:

tar -xf nginx-1.15.4.tar.gz

2、安装依赖包:

yum -y install pcre-devel   openssl-devel

3、创建nginx用户

useradd  -s /sbin/nologin nginx

4、编译安装:

cd nginx-1.15.4/

./configure --user=nginx --group=nginx --without-http_ssi_module --without-http_autoindex_module --with-http_ssl_module --with-http_stub_status_module    #默认安装到/usr/local/nginx  ,加选项   --prefix=安装路径  可以手动指定安装路径。

make && make install

 ln -s /usr/local/nginx/sbin/nginx  /sbin/

二、调优:

1、nginx作反向代理超时时间配置:

proxy_connect_timeout
语法 proxy_connect_timeout time 
默认值 60s
上下文 http server location
说明 该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。
这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有足够的线程处理请求,所以把你的请求放到请求池里稍后处理),那么这个声明是没有用的,由于与upstream服务器的连接已经建立了。

--------------------- 
proxy_read_timeout
语法 proxy_read_timeout time 
默认值 60s
上下文 http server location
说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。如果后端有大文件传输的需求时,需要将此值调大一些。
--------------------- 

proxy_send_timeout
语法 proxy_send_timeout time 
默认值 60s
上下文 http server location
说明 这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
--------------------- 
 

三、location匹配:

1、location的两大类:

nginx的location匹配分为普通匹配正则匹配。那么其中“~ ”和“~* ”前缀表示正则location ,“~ ”区分大小写,“~* ”不区分大小写;其他前缀(包括:“=”,“^~ ”和“@ ”)和无任何前缀的都属于普通location 。

2、多个 location 配置的情况下匹配顺序为

(1)首先精确匹配 =    ,若存在相同功能的正则匹配,则忽略。

(2)其次普通匹配 ^~   ,若存在相同功能的正则匹配,则忽略。

(3)其次是按文件中顺序的正则匹配  ,对于正则匹配,遵循匹配及停止的规则。注意:除了此条为正则location,其余都是普通location。

(4)然后匹配不带任何修饰的普通匹配。

(5)最后是交给 / 通用匹配,“/”的优先级最低,其他匹配不到的都会匹配到这里。

注意:

(1)若HTTP请求同时满足(3)和(4),即同时满足不带修饰的普通location和正则location时,正则location会覆盖普通location。

(2)对于普通location的匹配,与location的上下文位置无关,而是遵循最大前缀匹配。对于正则location的匹配,与location的上下文位置有关,遵循匹配及停止。

3、@的使用案例说明:

server {

    .......

     #error_page 404 http://www.baidu.com # 直接这样是不允许的

       error_page 404 = @fallback;

 

       location @fallback {

           proxy_pass http://www.baidu.com;

       }

     ......

}

上述配置文件的意思是:如果请求的 URI 存在,则本 nginx 返回对应的页面;如果不存在,则把请求代理到baidu.com 上去做个弥补(注: nginx 当发现 URI 对应的页面不存在, HTTP_StatusCode 会是 404 ,此时error_page 404 指令能捕获它)。

经过测试发现:若访问的页面nginx本身没有,baidu也找不到,会报302(临时重定向)错误。故思考,这种方式可能属于重定向的一种,但仅仅是我个人的想法,有待斟酌。

4、正则location:

(1)^: 匹配字符串的开始位置

(2)$:匹配字符串的结束位置

(3).*:   .匹配任意字符,*匹配数量0到正无穷

(4)\. 斜杠用来转义,\.匹配 .

(5)(值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp

  • . : 匹配除换行符以外的任意字符
  • ? : 重复0次或1次
  • + : 重复1次或更多次
  • * : 重复0次或更多次
  • \d :匹配数字
  • ^ : 匹配字符串的开始
  • $ : 匹配字符串的介绍
  • {n} : 重复n次
  • {n,} : 重复n次或更多次
  • [c] : 匹配单个字符c
  • [a-z] : 匹配a-z小写字母的任意一个
  • 小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是\转义特殊字符。

5、rewrite

https://www.cnblogs.com/IPYQ/p/7889399.html

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值