zoukankan      html  css  js  c++  java
  • sae-服务器php运行环境配置

    config.yaml 语法
    - OPTION: ARG1 ARG2 ... - OPTION: if (CONDICTIONs) ACTION
    CONDITION可以是以下任意一种:
    
    使用 == 和 != 运算符比较变量和字符串;
    使用 ~ (大小写敏感)和 ~* (大小写不敏感)运算符匹配变量和正则表达式。正则表达式可以包含匹配组,匹配结果后续可以使用变量%1..%9引用(正则匹配使用 PCRE 库,你可以在其主页或者 Wikipedia 找到其语法相关文档);
    使用 > 、 >= 、 < 、 <= 比较变量和数字的大小;
    使用 -f 和 !-f 运算符检查文件是否存在;
    使用 -d 和 !-d 运算符检查目录是否存在;
    使用 -e 和 !-e 运算符检查文件、目录是否存在;
    View Code
    %{REQ:HEADER_NAME} HTTP请求头中的字段,如%{REQ:HTTP_HOST}
    %{RESP:HEADER_NAME} HTTP响应头中的字段,如%{RESP:CONTENT_ENCODING}
    %{QUERY_STRING} 查询串,一般是url中问号后面的内容
    %{REQUEST_URI} 请求路径,即用户请求的url去掉主机部分和查询串后剩下的部分
    View Code

    目录默认页面:index.php

    自定义错误页面:404html

    是否启用压缩:按条件,根据回应的内容长度,请求来源,请求REQUEST_URI地址,

    URL重写:

    # 强制使用https访问
    - rewrite: if (%{REQ:X-Forwarded-Proto} != "https") goto "https://%{HTTP_HOST}%{REQUEST_URI}"
    
    # 当 url 匹配 urldir/(.*) ,并且 输入 header referer 等于 sina 时,跳转至页面 /usr/$1,$1 表示刚刚匹配的 urldir/(.*) 中的 (.*) 部分。
    - rewrite: if (%{REQUEST_URI} ~ "urldir/(.*)" && %{REQ:REFERER} == "sina") goto "/url/$1"
    
    # 当 url 匹配 urldir/(.*),并且请求的是一个目录时,跳转至 /url/$1
    - rewrite: if (-d && %{REQUEST_URI} ~ "urldir/(.*)") goto "/url/$1"
    
    # 当 url 匹配 path,并且请求的不是一个文件时,跳转至 /url/query.php
    - rewrite: if (!-f && %{REQUEST_URI} ~ "path") goto "/url/query.php"
    
    # 当查询串等于so,并且 url 以 zhaochou 结尾时,跳转至 /url/%1,%1 表示 query_string 匹配到的部分。
    - rewrite: if (%{QUERY_STRING} ~ "^(so)$" && %{REQUEST_URI} ~ "zhaochou$") goto "/url/%1"
    
    # 当查询串不包含sohu,并且 url 以zhaochou结尾时,跳转至/url/query.php?%{QUERY_STRING},%{QUERY_STRING}表示查询串。
    - rewrite: if (%{QUERY_STRING} !~ "sohu" && %{REQUEST_URI} ~ "zhaochou$") goto "/url/query.php?%{QUERY_STRING}"
    
    # 如果 url 既不是文件,也不是目录,跳转至 index.php?%{QUERY_STRING}
    - rewrite: if (!-d && !-f) goto "/index.php?%{QUERY_STRING}"
    View Code

    回应指定过期时间

    回应指定头部信息

    访问控制

    1. # 对cron任务保护,防止被外部抓取,我们将cron任务放在cron目录下(sae中cron服务执行时,走的是内部网络)
      - hostaccess: if (%{REQUEST_URI} ~ "/cron/") allow "10.0.0.0/8" 允许10打头的所有IP
    2. - hostaccess: deny "127.0.0.1"# 禁止127.0.0.1 的所有访问(这个要慎用)
    3. # 对于屏蔽一组IP地址,可以写成子网掩码形式,或者将多个IP之间加以空格。子网掩码形式如下:
      - hostaccess: if (%{REQUEST_URI} ~ "/cron/") deny "108.192.8.0/24" 屏蔽108.192.8打头的所有IP

    http基础认证

    # 用户的网站后台程序都放在admin目录下,需要对admin目录做密码保护
    - passwdaccess: if (%{REQUEST_URI} ~ "/admin/") passwd "admin:admin123" 这个和index.php重写一起用
  • 相关阅读:
    GeoServer源码之Dispatcher
    Geoserver开发之OWS是什么?
    GeoServer数据工作空间:怎么设置?
    Java注解:不使用注解的话,也能实现初始化bean吗?
    JSP编译错误无法显示:PWC6033: Unable to compile class for JSP
    Spring Bean初始化失败
    【每日一具17】CAD迷你画图/最新2020R9
    用python爬虫简单网站却有 “多重思路”--猫眼电影
    【每日一具17】CAD迷你画图/最新2020R9
    Python教你如何对 Excel(xlxs文件) 表的读写和处理
  • 原文地址:https://www.cnblogs.com/jdhu/p/4507505.html
Copyright © 2011-2022 走看看