`

Nginx 利用if判断

阅读更多
[root@www conf]#  tail      nginx.conf
 
                                location  /  {
                                               stub_status  on;
                                               access_log      off;
                                }
 
                }
 
include    vhost/*.conf;              //指定虚拟主机配置文件路径
}
[root@www conf]#  cd      /usr/local/nginx/conf/vhost
编辑虚拟主机配置文件
[root@www vhost]#vim      dedecms.conf  
server {
                                listen              80;
                                server_name    www.wokao.com;
                                index      index.html    index.htm   index.php;
                                root    /data/www/wokao;
                                location  ~  .*\.(php|php5)?$
 
                                               {
                                                               Include    test.conf;
                                                               fastcgi_pass    unix:/tmp/php-cgi.sock;
                                                               #fastcgi_pass    127.0.0.1:9000;
                                                               fastcgi_index  index.php;
                                                               include  fcgi.conf;
                                               }
 
                }
[root@www conf]#  pwd
/usr/local/nginx/conf
[root@www conf]#  vim    test.conf
  //如果访问request的method值为POST则返回“o”
  If    ($request_method    ~*   "POST")
                                {
                                               set    $test  o;
 
                                }
 
  
if    ($remote_addr      =     '188.188.3.171')        //如果访问地址等于188.188.3.171则返回“k”
同理
#if  ($remote_addr    !=   '188.188.3.171')        //如果访问地址非188.188.3.171则返回“k”
 
                                {
                                               Set    $test    "${test}k";
                                }
  //如果满足上述条件则返回“ok”处理方式为返回403
  if    (  $test    =    ok  )
                                {
                                               Return    403;
                                                        #rewrite    ^(.*)   http://www.fengyuba.com  permanent;
                                                        #如果满足条件则重定向到www.fengyuba.com
                                }
参数注释如下:
正则表达式匹配,其中:

 

  • * ~ 为区分大小写匹配
  • * ~* 为不区分大小写匹配
  • * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配,其中:

 

  • * -f和!-f用来判断是否存在文件
  • * -d和!-d用来判断是否存在目录
  • * -e和!-e用来判断是否存在文件或目录
  • * -x和!-x用来判断文件是否可执行
flag标记有:

 

  • * last 相当于apache里的[L]标记,表示完成rewrite
  • * break 终止匹配, 不再匹配后面的规则
  • * redirect 返回302临时重定向 地址栏会显示跳转后的地址
  • * permanent 返回301永久重定向 地址栏会显示跳转后的地址
 
$args 此变量与请求行中的参数相等
$content_length 等于请求行的“Content_Length”的值。
$content_type 等同与请求头部的”Content_Type”的值
$document_root 等同于当前请求的root指令指定的值
$document_uri 与$uri一样
$host 与请求头部中“Host”行指定的值或是request到达的server的名字(没有Host行)一样
$limit_rate 允许限制的连接速率
$uri 等同于当前request中的URI,可不同于初始值,例如内部重定向时或使用index
$server_protocol 等同于request的协议,使用“HTTP/1.0”或“HTTP/1.1”
$server_port 请求到达的服务器的端口号
$server_name 请求到达的服务器名
$server_addr request到达的server的ip,一般获得此变量的值的目的是进行系统调用。为了避免系统调用,有必要在listen指令中指明ip,并使用bind参数。
$request_uri 含有参数的完整的初始URI
$request_method 等同于request的method,通常是“GET”或“POST”
$request_filename 当前请求的文件的路径名,由root或alias和URIrequest组合而成
$request_body_file
$remote_user 等同于用户名,由ngx_http_auth_basic_module认证
$remote_port 客户端port
$remote_addr 客户端ip
$query_string 与$args一样
分享到:
评论

相关推荐

    Nginx中IF、AND、OR语句用法实例

    在Nginx配置中,`IF`语句用于执行基于某些条件的逻辑判断,而`AND`和`OR`操作通常在编程语言中用于组合多个条件。然而,Nginx的配置语法并不直接支持`AND`和`OR`操作符。尽管如此,我们可以使用变量和条件语句的组合...

    nginx利用referer指令实现防盗链配置

    本文将详细介绍如何利用 Nginx 的 `referer` 指令进行防盗链配置。 `Referer` 字段在 HTTP 请求头中用于指示用户是从哪个 URL 跳转到当前请求的页面的。在图片防盗链的场景下,如果 Nginx 服务器接收到一个请求,其...

    nginx location中多个if里面proxy_pass的方法

    在`server`块中,可以通过设置变量并利用`if`语句来决定请求应被转发到哪个服务器。例如: ```nginx server { listen 127.0.0.1:80; set $test A; set $testB B; location / { if ($test ~* "A") { proxy_...

    Nginx配置如何区分PC或手机访问不同域名

    例如,若想在移动端访问时重定向到另一个域名(如***),可以利用Nginx配置文件中的`if`语句,结合正则表达式匹配HTTP_USER_AGENT,检测是否为移动设备访问(如使用Android、iPhone、WindowsPhone、UC、Kindle等标识...

    nginx try_files指令判断文件是否存在实例

    这样,我们就利用 `try_files` 和 `if` 指令实现了优先查找 `/static` 目录,然后回退到根目录的逻辑。然而,`if` 指令在某些情况下可能会导致性能问题,因此在 `nginx` 配置中推荐尽量避免使用复杂的 `if` 结构。在...

    Nginx经典教程

    5. **变量与条件判断**:演示了如何结合if语句使用变量,进行复杂的条件路由和响应处理。 6. **变量与子请求**:解释了在子请求中如何正确地使用变量,确保子请求能够继承主请求的变量状态。 #### 二、Nginx配置...

    nginx伪静态隐藏.php后缀,在url后补斜杠/

    - **条件判断**:`if (!-e $request_filename)` 这一行代码的作用是检查请求的文件是否真实存在。如果不存在,则执行后面的重写规则。 - **重写规则**:`rewrite ^(.*)/$ $1.php last;` 这行代码表示如果 URL 结尾有...

    nginx内置变量

    **Nginx内置变量概述** Nginx是一个高性能的HTTP和反向代理服务器,它具有模块化设计和出色的并发处理能力。...对于任何涉及Nginx配置的IT专业人员来说,理解和利用这些内置变量都是必不可少的知识点。

    利用nginx如何匹配多个条件

    在Nginx中,`if`指令用于执行条件判断。这里的`!~`操作符表示不匹配正则表达式。正则表达式`(127.0.0.1)`用于匹配IP地址127.0.0.1。如果`$remote_addr`或`$http_x_forwarded_for`不包含这个IP,`if`语句的结果为真,...

    nginx rewrite规则

    Nginx的`rewrite`规则还可以与其他指令结合,比如`if`语句,实现更复杂的逻辑判断。但需要注意的是,`if`语句在Nginx中的使用应当谨慎,因为它的执行时机可能引发性能问题。 **6. 与location的关系** `rewrite`...

    Nginx根据不同浏览器语言配置页面跳转的方法

    为了在Nginx中实现基于`Accept-Language`的页面跳转,我们可以利用`map`指令来创建一个规则集,根据浏览器发送的语言标识符来设置变量。例如,如果我们只关心简体中文(zhs)和繁体中文(zht),可以这样配置: ```...

    agentzh-nginx-tutorials-zhcn.pdf

    - **基于Nginx的应用缓存**:介绍如何利用Nginx实现应用级别的缓存机制。 - **Nginx中的安全与访问控制**:讨论Nginx的安全策略和访问控制机制。 - **基于Nginx的Web服务器优化**:提供关于提升Web服务器性能的建议...

    如何利用nginx通过正则拦截指定url请求详解

    `if`语句判断匹配成功后,将返回404状态码,阻止这些请求被进一步处理。 除了拦截请求,Nginx还支持设置防盗链(Referrer Filter)。防盗链可以防止其他网站盗用我们的资源,比如图片、视频等。以下是一个简单的...

    nginx动态添加访问白名单的方法

    要启用Nginx的访问白名单,我们需要在Nginx的配置文件(通常为nginx.conf)中创建一个地理定位(geo)模块,用于根据客户端IP地址判断是否允许访问。以下是一个示例配置: ```nginx geo $remote_addr $ip_whitelist...

    agentzh 的 Nginx 教程(版本 2016.07.21

    - **定义方式**:教程解释了如何定义自定义变量,并展示了如何利用变量进行条件判断、逻辑运算等操作。 - **应用场景**:通过具体的案例分析,如基于地理位置的重定向、根据客户端IP地址进行访问控制等,展示了变量...

    章亦春nginx漫谈

    - Nginx 支持基于变量值的条件判断。 - 示例:`if ($http_user_agent ~* MSIE) { ... }`,这里使用 `$http_user_agent` 来判断用户是否使用 Internet Explorer 浏览器。 **URL 重写与重定向**: - 可以利用变量来...

    nginx-伪静态-重定向-包括域名、目录、文件等配置方法.pdf

    ### Nginx 伪静态与重定向配置详解 #### 一、引言 ...此外,Nginx 的 IF 条件判断和高级命令也为实现更加精细的控制提供了可能。正确使用这些功能,不仅能提升用户体验,还能有效改善网站的 SEO 效果。

    Nginx中文手册下载

    - **实现方法**:通过配置文件中的if条件判断实现。 #### 九、Nginx访问控制 - **功能**:基于IP或用户代理的访问限制。 - **应用场景**:保护敏感资源免受未经授权的访问。 #### 十、Nginx日志处理 - **记录格式*...

    nginx的概要介绍与分析

    6. **条件判断**:通过if模块可以根据请求的条件执行不同的操作。 7. **位置匹配**:支持基于URI路径的位置匹配,可以针对不同路径设置不同的处理逻辑。 8. **内容类型处理**:能够自动识别并设置正确的MIME类型,以...

Global site tag (gtag.js) - Google Analytics