{
  "form": [
    {
      "key": "tmp_trans_ip",
      "title": "透传客户端IP",
      "type": "switch",
      "required": false,
      "description": "添加：proxy_set_header X-Real_IP $remote_addr,X-Forwarded-For $proxy_add_x_forwarded_for",
      "minimizeDesc": true
    },
    {
      "key": "tmp_trans_host",
      "title": "改写访问域名",
      "type": "switch",
      "required": false,
      "description": "添加：proxy_set_header Host $host"
    },
    {
      "key": "tmp_support_ws",
      "title": "支持Websocket",
      "type": "switch",
      "required": false,
      "description": "添加websocket代理需要的请求头"
    },
    {
      "key": "proxy_connect_timeout",
      "title": "连接超时时间",
      "type": "string",
      "required": false,
      "ruleType": "reg",
      "pattern": "^(\\d+(s|m|h))?$",
      "description": "eg. 60s 5m 1h"
    },
    {
      "key": "proxy_read_timeout",
      "title": "读超时时间",
      "type": "string",
      "ruleType": "reg",
      "pattern": "[\\d+](s|m|h)$",
      "required": false,
      "description": "proxy_read_timeout"
    },
    {
      "key": "proxy_http_version",
      "title": "代理http版本",
      "type": "select",
      "option": ["1.0","1.1"],
      "required": false
    },
    {
      "key": "proxy_set_header",
      "title": "代理请求头",
      "type": "array",
      "items": [
        {
          "key": "name",
          "type": "string",
          "placeholder": "请求头名称",
          "title": "请求头名称",
          "mode": "tags",
          "option": ["Host","X-Real-IP","X-Forwarded-For","Upgrade","Connection"],
          "description": "Host,X-Real-IP,X-Forwarded-For,Upgrade,Connection",
          "width": 180
        },
        {
          "key": "value",
          "type": "string",
          "mode": "tags",
          "placeholder": "请求头值",
          "title": "请求头值",
          "option": ["$host","$remote_addr","$proxy_add_x_forwarded_for","$http_upgrade","upgrade"],
          "description": "如：$host,$remote_addr,$proxy_add_x_forwarded_for,$http_upgrade,upgrade",
          "width": 180
        }
      ],
      "required": false
    },
    {
      "key": "proxy_next_upstream",
      "title": "proxy_next_upstream",
      "type": "select",
      "option": ["error","timeout","invalid_header","http_500","http_502","http_503","http_504","http_403","http_404","http_429","non_idempotent","off"],
      "mode": "multiple",
      "placeholder": "default: proxy_next_upstream error timeout",
      "required": false,
      "width": 425
    },
    {
      "key": "proxy_next_upstream_timeout",
      "title": "next_upstream_timeout",
      "type": "string",
      "required": false,
      "placeholder": "eg. 60s 5m"
    },
    {
      "key": "proxy_next_upstream_tries",
      "title": "proxy_next_upstream_tries",
      "type": "int",
      "required": false,
      "placeholder": "proxy_next_upstream_tries,default is 0"
    },
    {
      "key": "proxy_custom_config",
      "title": "自定义配置",
      "type": "textarea",
      "hideHeader": true,
      "description": "参考文档： https://nginx.org/en/docs/http/ngx_http_proxy_module.html",
      "required": false,
      "placeholder": "将会拼接到http的配置文件后，请注意格式",
      "width": 425
    },
    {
      "key": "tmp_proxy_more",
      "title": "更多设置",
      "collapsible": true,
      "type": "divider",
      "items": [
        {
          "key": "proxy_send_timeout",
          "title": "proxy_send_timeout",
          "type": "string",
          "ruleType": "reg",
          "pattern": "[\\d+](s|m|h)$",
          "required": false
        },
        {
          "key": "proxy_redirect",
          "title": "重定向(proxy_redirect)",
          "type": "string",
          "required": false,
          "description": "请输入 default 或者off 或者 redirect replacement，eg. http://upstream:port/two/ /one/"
        },
        {
          "key": "proxy_pass_request_body",
          "title": "发送请求数据",
          "description": "proxy_pass_request_body: 特定场景，不需要将数据转发到服务端,默认发送;关闭会同时添加 proxy_set_header Content-Length \"\" ",
          "type": "switch",
          "value": true,
          "required": false
        },
        {
          "key": "ssl_certificate",
          "title": "SSL证书",
          "type": "certs",
          "required": false
        },
        {
          "key": "proxy_ssl_ciphers",
          "title": "proxy_ssl_ciphers",
          "type": "string",
          "required": false
        },
        {
          "key": "proxy_ssl_protocols",
          "title": "proxy_ssl_protocols",
          "type": "select",
          "option": ["SSLv2","SSLv3","SSLv1","SSLv1.1","SSLv1.2","SSLv1.3"],
          "mode": "multiple",
          "required": false
        },
        {
          "key": "proxy_ssl_verify",
          "title": "证书校验",
          "type": "switch",
          "required": false
        },
        {
          "key": "proxy_store",
          "title": "proxy_store",
          "type": "string",
          "required": false,
          "description": "Enables saving of files to a disk. The on parameter saves files with paths corresponding to the directives alias or root. The off parameter disables saving of files. In addition, the file name can be set explicitly using the string with variables:\n\nproxy_store /data/www$original_uri;"
        },
        {
          "key": "proxy_store_access",
          "title": "proxy_store_access",
          "type": "string",
          "required": false,
          "description": "Sets access permissions for newly created files and directories, e.g.:\n\nproxy_store_access user:rw group:rw all:r;\nIf any group or all access permissions are specified then user permissions may be omitted:\n\nproxy_store_access group:rw all:r;"
        },
        {
          "key": "proxy_temp_file_write_size",
          "title": "proxy_temp_file_write_size",
          "type": "string",
          "required": false,
          "description": "Default:\t\nproxy_temp_file_write_size 8k|16k;"
        },
        {
          "key": "proxy_temp_path",
          "title": "proxy_temp_path",
          "type": "string",
          "required": false,
          "description": "Syntax: proxy_temp_path path [level1 [level2 [level3]]];eg. proxy_temp_path /spool/nginx/proxy_temp 1 2;"
        }
      ]
    }
  ]
}
