nginx1.14.2转发配置(nginx11511)

Nginx配置转发

location 匹配规则

语法规则

模式 含义

location = /uri = 表示精确匹配,只有完全匹配上才能生效

location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。

location ~ pattern 开头表示区分大小写的正则匹配

location ~* pattern 开头表示不区分大小写的正则匹配

location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后

location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default

前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/20%/aa,可以被规则 ^~ /static/ /aa 匹配到(注意是空格)

多个 location 配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

注意:前缀匹配,如果有包含关系时,按最大匹配原则进行匹配。比如在前缀匹配:location /dir01 与location /dir01/dir02,如有请求 将最终匹配到 location /dir01/dir02

例子,有如下匹配规则:

location = / {

echo \”规则A\”;

}

location = /login {

echo \”规则B\”;

}

location ^~ /static/ {

echo \”规则C\”;

}

location ^~ /static/files {

echo \”规则X\”;

}

location ~ .(gif|jpg|png|js|css) {

echo \”规则E\”;

}

location /img {

echo \”规则Y\”;

}

location / {

echo \”规则F\”;

}

那么产生的效果如下:

访问 则最终匹配到规则 F ,因为以上规则都不匹配,这个时候应该是 Nginx 转发请求给后端应用服务器,比如 FastCGI(php),tomcat(jsp),Nginx 作为反向代理服务器存在。

所以实际使用中,笔者觉得至少有三个匹配规则定义,如下:

location = / {

proxy_pass

}

location ^~ /static/ {

root /webroot/static/;

}

location ~* .(gif|jpg|jpeg|png|css|js|ico)$ {

root /webroot/res/;

}

location / {

proxy_pass

}

rewrite 语法

1、下面是可以用来判断的表达式:

2、下面是可以用作判断的全局变量

redirect 语法

server {

listen 80;

server_name start.igrow.cn;

index index.html index.php;

root html;

if ( \”) {

rewrite ^(.*) redirect;

}

}

防盗链

location ~* .(gif|jpg|swf) invalid_referer) {

rewrite ^/ ;

}

}

根据文件类型设置过期时间

location ~* .(js|css|jpg|jpeg|gif|png|swf) request_filename) {

expires 1h;

break;

}

}

禁止访问某个目录

location ~* .(txt|doc)${

root /data/www/wwwroot/linuxtone/test;

deny all;

}

参考文档资料链接

Nginx 域名转发配置

实现:

1.打开nginx的配置文件,打开 /安装路径/conf/nginx.conf,进行如下配置

nginx转发配置

顺序 no优先级:

( location = ) ( location 完整路径 ) ( location ^~ 路径 ) ( location ~,~* 正则顺序 ) ( location 部分起始路径 ) ( / )

上面的匹配结果

按照上面的 location 写法,以下的匹配示例成立:

所以实际使用中,个人觉得至少有三个匹配规则定义,如下:

rewrite 功能就是,使用 nginx 提供的全局变量或自己设置的变量,结合正则表达式和标志位实现 url 重写以及重定向。 rewrite 只能放在 server{},location{},if{} 中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如 ;u=str 只对 /a/we/index.php 重写。语法 rewrite regex replacement [flag] ;

如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用 proxy_pass 反向代理。

表明看 rewrite 和 location 功能有点像,都能实现跳转,主要区别在于 rewrite 是在同一域名内更改获取资源的路径,而 location 是对一类路径做控制访问或反向代理,可以 proxy_pass 到其他机器。很多情况下 rewrite 也会写在 location 里,它们的执行顺序是:

如果其中某步 URI 被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回 500 Internal Server Error 错误。

因为 301 和 302 不能简单的只返回状态码,还必须有重定向的 URL ,这就是 return 指令无法返回 301 , 302 的原因了。这里 last 和 break 区别有点难以理解:

if判断指令

语法为 if(condition){…} ,对给定的条件 condition 进行判断。如果为真,大括号内的 rewrite 指令将被执行, if 条件 (conditon) 可以是如下任何内容:

-f 和 !-f 用来判断是否存在文件

-d 和 !-d 用来判断是否存在目录

-e 和 !-e 用来判断是否存在文件或目录

-x 和 !-x 用来判断文件是否可执行

例如:

下面是可以用作if判断的全局变量

例:

$host:localhost

$server_port : 88

$request_uri :

$document_uri : /test1/test2/test.php

$document_root : /var/www/html

$request_filename : /var/www/html/test1/test2/test.php

小括号 () 之间匹配的内容,可以在后面通过 $1 来引用, $2 表示的是前面第二个 () 里的内容。正则里面容易让人困惑的是 \\ 转义特殊字符。

例1 :

对形如 /images/ef/uh7b3/test.png 的请求,重写到 /data?file=test.png ,于是匹配到 location /data ,先看 /data/images/test.png 文件存不存在,如果存在则正常响应,如果不存在则重写 tryfiles 到新的 image404 location ,直接返回 404 状态码。

例2 :

对形如 /images/bla_500x400.jpg 的文件请求,重写到 /resizer/bla.jpg?width=500height=400 地址,并会继续尝试匹配 location 。

nginx 配置详解是什么?

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

Nginx常用功能。

1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案。

。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

2、负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

nginx转发请求

再使用 nginx 的反向代理的时候,有时候部署的某台机器的php-fpm出问题了(比如丢了某个扩展导致服务无法正常运行),需要修好才能重新上,为了避免修复的过程被客户感知到。我们可以将请求转发到其他正常的机器上,使用远程php-fpm,或者修改反向代理的upstream

在某些情况下下也不能使用方案2(使用的unix sock通信)在某些特殊情况下我们可能不能使用方案3(比如忘记反向代理upstream部署在哪台机器上了)

nginx转发请求非常简单,我们只需要在对对应的location里面添加如下配置即可

修改配置后reload一下nginx,然后打到 location /xxx/ 的请求都会被转发到指定ip:port

nginx 转发配置

proxy_pass 192.168.5.222:8090/xxxx.php;

先把http://加上再说. proxy_pass ;

0

评论0