Presentation is loading. Please wait.

Presentation is loading. Please wait.

轻量级HTTP服务器/反向代理服务器nginx

Similar presentations


Presentation on theme: "轻量级HTTP服务器/反向代理服务器nginx"— Presentation transcript:

1 轻量级HTTP服务器/反向代理服务器nginx
主讲人:高俊峰 华章培训网、[

2 Nginx的URL重写和反向代理功能 第二讲
内容概述 Nginx下常见的正则语法及含义 nginx的URL重写功能应用实例 实例介绍Nginx的反向代理功能 华章培训网、[

3 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令
nginx的URL重写模块是用的比较多的模块之一,因此拿出来单独讲述,常用的URL重写模块指令有if、rewrite、set、break、return等指令,分别讲述如下。

4 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 if指令 语法:if (condition) { … }
默认值:none 使用字段:server, location 判断一个条件,如果条件成立,则后面的大括号内的语句将执行,相关配置从上级继承。 可以在判断语句中指定下列值:

5 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 正则表达式匹配: ~ 为区分大小写匹配
~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配: -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!-x用来判断文件是否可执行

6 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 Nginx常用的内置全局变量含义:
$args 此变量与请求行中的参数相等 $document_root 等同于当前请求的root指令指定的值 $document_uri 与$uri一样 $host 与请求头部中“Host”行指定的值 $limit_rate 允许限制的连接速率 $request_method 等同于request的method,通常是“GET”或“POST” $remote_addr 客户端ip $remote_port 客户端port $remote_user 等同于用户名,由ngx_http_auth_basic_module认证 $request_filename 当前请求的文件的路径名,由root或alias和URI request组合而成 $request_uri 含有参数的完整的初始URI $query_string 与$args一样 $server_name 请求到达的服务器名 $server_port 请求到达的服务器的端口号 $uri 等同于当前request中的URI。

7 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 if指令示例配置:
location ~*\.(gif|jpg|jpeg|png|bmp|swf|htm|html)$ { root /cicro/wcm/vhosts/ if (!-f $request_filename) { root /cicro/wcm; } root /cicro/wcm/vhosts/common; location ~*\.(jsp)$ { proxy_pass

8 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 rewrite指令 语法:rewrite regex replacement flag 默认值:none 使用字段:server, location, if 按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。如果替换的字符串以 * last 相当于Apache里的[L]标记,表示完成rewrite之后搜索相应的URI或location * break 终止匹配, 不再匹配后面的规则 * redirect 返回302临时重定向 地址栏会显示跳转后的地址 * permanent 返回301永久重定向 地址栏会显示跳转后的地址

9 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 ~^ 表示只匹配字符串,不查询正则表达式。 示例配置1: 将请求为 location ~^/best/ { rewrite ^/best/(.*)$ /test/$1 break; proxy_pass }

10 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 set指令 语法:set variable value 默认值:none 使用字段:server, location, if 指令设置一个变量并为其赋值,其值可以是文本、变量和它们的组合。也可以使用set定义一个新的变量,但是不能使用set设置$http_xxx头部变量的值。

11 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 示例配置: 将请求为 set $query $query_string; rewrite /wp /wordpress?$query?; 这里涉及到$query_string变量,这个变量等于请求行中的参数,也可以用$args代替$query_string。

12 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 break指令: 语法:break 默认值:none 使用字段:server, location, if 完成当前设置的规则,停止执行其他的重写指令。 示例: if ($slow) { limit_rate 10k; break; }

13 Nginx下常见的正则语法及含义 1、URL重写模块(Rewrite)常用指令 return指令 语法:return code 默认值:none 使用字段:server, location, if 这个指令结束执行配置语句并为客户端返回状态代码,可以使用下列的值:204,400, ,408,410, 411, 413, 416与 。

14 实例介绍Nginx的反向代理功能 1.Nginx多域名跳转实例 aaa.com———>a.b.c.d:8080/web aaa.com/admin–>a.b.c.d:8080/admin bbb.com———->a.b.c.d:8080/wap nginx的简化配置如下: server aaa.com location / { proxy_pass } location /admin{ proxy_pass server bbb.com proxy_pass

15 实例介绍Nginx的反向代理功能 2、新旧域名过渡时期通过nginx重定向的方法 要进行域名更换过度时期新旧域名的过度,可以通过设置nginx下面的方法实现: 第一种方法是判断nginx核心变量host,nginx老版本是http_host: server { server_name if ($host != ' ) { rewrite ^/(.*)$ permanent; } ... 第二种方法: server_name rewrite ^/(.*)$ permanent; 这两种方法中, permanent是关键。

16 实例介绍Nginx的反向代理功能 3、alias在Nginx下的应用 location /i/ { alias /www/w3/images/; } 这个例子中,请求”/i/top.gif”将返回这个文件: ”/www/w3/images/top.gif”。正如我们所看到的,uri中location后面的部分会追加到这个目录后面,而location自身是“丢弃的” 如果使用root指令的话会进行完整的追加,如上例中,如果使用root指令则返回:”/www/w3/images/i/top.gif” Alias同样可以用于带正则表达式的location,如: location ~ ^/download/(.*)$ { alias /home/website/files/$1; }请求”/download/book.pdf”将返回”/home/website/files/book.pdf”。同样注意,uri中location后面的部分会追加到这个目录后面。同样,也可以在别名目录字段中使用变量。

17 实例介绍Nginx的反向代理功能 3、alias在Nginx下的应用 Alias与root的区别: location /abc/ { alias /home/html/abc/; } 在这段配置下, root /home/html/; 这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。 总结:一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯。

18 实例介绍Nginx的反向代理功能 4、location指令应用实例 基本用法: location = / { # 只匹配对 / 目录的查询. } location / { # 匹配以 / 开始的查询,即所有查询都匹配。 location ^~ /images/ { # 匹配以 /images/ 开始的查询,并且停止搜索。任何正则表达式将不会被检查。 location ~* \.(gif|jpg|jpeg)$ { # 匹配以gif, jpg, or jpeg结尾的文件,但优先级低于“^~ /images/ ”。

19 实例介绍Nginx的反向代理功能 4、location指令应用实例 Nginx 实现Apache一样目录列表 location / { autoindex on; } 使用ngx_http_access_module限制ip访问 deny ; allow /24; allow /16; deny all;

20 实例介绍Nginx的反向代理功能 4、location指令应用实例 禁止访问某个目录 location ~ ^/(WEB-INF)/ { deny all; } Nginx下禁止访问*.txt、*.doc文件 location ~* \.(txt|doc)${ root /data/www/wwwroot/test;

21 http://www. hztraining.com
感谢您对华章培训网的支持! hztraining.com


Download ppt "轻量级HTTP服务器/反向代理服务器nginx"

Similar presentations


Ads by Google