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重写一起用
  • 相关阅读:
    如何高效处理bug?
    如何获取字符串函数的实现?
    数据处理-csv,pandas
    CentOS 下安装SAC(Seismic Analysis Code)
    CentOS安装使用ffmpeg
    Tensorflow问题记录 --pydot Failed to import pydot. You must install pydot and graphviz for pydotprint to work
    Tensorflow学习记录 --TensorFlow高效读取数据tfrecord
    Committee to boost development of Chinese language teachers
    Consensus-based decentralized auctions for robust task allocation
    Chinese market critical to US firms: US-China Business Council
  • 原文地址:https://www.cnblogs.com/jdhu/p/4507505.html
Copyright © 2011-2022 走看看