当前位置: 首页 > news >正文

iis怎么设置网站网站开发流程有哪几个阶段

iis怎么设置网站,网站开发流程有哪几个阶段,wordpress get post,网站建设手机网站文章目录 概述步骤 1: 安装 Nginx 和 Lua 模块步骤 2: 创建 Lua 脚本用于参数校验步骤 3: 配置 Nginx 使用 Lua 脚本写法二#xff1a; 状态码写法三 #xff1a; 返回自定义JSON复杂的正则校验 步骤 4: 测试和验证ngx.HTTP_* 枚举值 概述 一个不使用 OpenResty 的 Nginx 集… 文章目录 概述步骤 1: 安装 Nginx 和 Lua 模块步骤 2: 创建 Lua 脚本用于参数校验步骤 3: 配置 Nginx 使用 Lua 脚本写法二 状态码写法三 返回自定义JSON复杂的正则校验 步骤 4: 测试和验证ngx.HTTP_* 枚举值 概述 一个不使用 OpenResty 的 Nginx 集成 Lua 脚本的方案用于对 POST 请求参数进行校验。 指令所处处理阶段使用范围解释init_by_lua / init_by_lua_fileloading-confighttpNginx Master进程加载配置时执行通常用于初始化全局配置/预加载Lua模块init_worker_by_lua / init_worker_by_lua_filestarting-workerhttp每个Nginx Worker进程启动时调用的计时器如果Master进程不允许则只会在init_by_lua之后调用通常用于定时拉取配置/数据或者后端服务的健康检查set_by_lua / set_by_lua_filerewriteserver, server if, location, location if设置Nginx变量可以实现复杂的赋值逻辑此处是阻塞的Lua代码要做到非常快。rewrite_by_lua / rewrite_by_lua_filerewritehttp, server, location, location ifrewrite阶段处理可以实现复杂的转发/重定向逻辑。access_by_lua / access_by_lua_fileaccesshttp, server, location, location if请求访问阶段处理用于访问控制。content_by_lua / content_by_lua_filecontentlocation, location if内容处理器接收请求处理并输出响应。header_filter_by_lua / header_filter_by_lua_fileoutput-header-filterhttp, server, location, location if设置header和cookie。body_filter_by_lua / body_filter_by_lua_fileoutput-body-filterhttp, server, location, location if对响应数据进行过滤比如截断、替换。log_by_lua / log_by_lua_fileloghttp, server, location, location iflog阶段处理比如记录访问量/统计平均响应时间。 步骤 1: 安装 Nginx 和 Lua 模块 玩转 Nginx 之使用 Lua 扩展 Nginx 功能 步骤 2: 创建 Lua 脚本用于参数校验 创建一个 Lua 脚本位于 /opt/nginx/lib/lua/validate_params.lua路径根据nginx.conf中的位置调整 -- validate_params.lua local function validate_post_params()ngx.req.read_body()local args ngx.req.get_post_args()if not args.username or #args.username 3 thenngx.status ngx.HTTP_BAD_REQUESTngx.say(Username must be at least 3 characters long)return falseendif not args.password or #args.password 6 thenngx.status ngx.HTTP_BAD_REQUESTngx.say(Password must be at least 6 characters long)return falseendreturn true endreturn {validate_post_params validate_post_params } 步骤 3: 配置 Nginx 使用 Lua 脚本 在 Nginx 配置文件中使用 Lua 脚本来校验 POST 请求参数。修改 nginx.conf 增加 Lua 配置 user root; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;lua_package_path /opt/nginx/lib/lua/?.lua;;;lua_need_request_body on; # 启用请求体读取log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for;access_log logs/access.log main;error_log logs/error.log ;sendfile on;keepalive_timeout 65;server {listen 28443;server_name localhost;access_log logs/host.access.log main;location / {root html;index index.html index.htm;}location /api {content_by_lua_block {local validator require(validate_params)if validator.validate_post_params() thenngx.say(Validation passed)end}}} } 写法二 状态码 lua -- validate_params.lua local function validate_post_params()ngx.req.read_body()local args ngx.req.get_post_args()-- 验证用户名if not args.username or #args.username 3 thenreturn ngx.HTTP_BAD_REQUEST, Invalid usernameend-- 验证密码if not args.password or #args.password 6 thenreturn ngx.HTTP_BAD_REQUEST, Invalid passwordend-- 验证通过return ngx.HTTP_OK, Validation successful endreturn {validate validate_post_params }nginx.conf location config location /api {content_by_lua_block {local validator require(validate_params)local status, message validator.validate()ngx.status statusngx.say(status)ngx.say(message)if status ~ ngx.HTTP_OK thenngx.exit(status)end-- 继续后续业务逻辑}}写法三 返回自定义JSON 如果不使用 cjson 库我们可以手动构造 JSON 字符串。这种方法虽然不如使用专门的 JSON 库灵活但对于简单的情况来说是足够的。 -- validate_params.lua local function validate_post_params()ngx.req.read_body()local args ngx.req.get_post_args()if not args.username or #args.username 3 thenngx.status ngx.HTTP_BAD_REQUESTngx.say(Username must be at least 3 characters long)return falseendif not args.password or #args.password 6 thenngx.status ngx.HTTP_BAD_REQUEST-- 创建 JSON 字符串local json_response string.format({status:%s,message:%s},ngx.status, Password must be at least 6 characters long)-- 设置响应头为 JSONngx.header.content_type application/json-- 输出 JSON 响应ngx.say(json_response)return falseendreturn true endreturn {validate_post_params validate_post_params }这段代码会返回相同格式的 JSON {status: 400,message: Password must be at least 6 characters long }几点说明 使用 Lua 的 string.format() 函数来构造 JSON 字符串。这种方法适用于简单的 JSON 结构。 注意要正确处理字符串中的特殊字符特别是引号。在这个例子中我们的消息没有特殊字符但在实际应用中可能需要进行转义。 仍然设置响应头的 content-type 为 “application/json”。 使用 ngx.say() 输出构造的 JSON 字符串。 这种方法的优点是不依赖额外的库缺点是对于复杂的 JSON 结构可能会变得难以维护。如果需要处理更复杂的 JSON 数据或者需要频繁地进行 JSON 操作最好还是使用专门的 JSON 库如 cjson 或 dkjson。 location /api {content_by_lua_block {local validator require(validate_params)if validator.validate_post_params() thenngx.say(Validation passed)end}}复杂的正则校验 -- validate_params.lua-- 用户名验证函数 local function validate_username(username)-- 基础检查if not username or username thenreturn false, Username cannot be emptyend-- 长度检查local length string.len(username)if length 3 thenreturn false, Username is too short (minimum 3 characters)endif length 20 thenreturn false, Username is too long (maximum 20 characters)end-- 检查是否包含空格if string.find(username, %s) thenreturn false, Username cannot contain spacesend-- 正则表达式检查(只允许字母、数字、下划线必须以字母开头)local pattern ^[A-Za-z][A-Za-z0-9_]*$if not ngx.re.match(username, pattern) thenreturn false, Username must start with a letter and can only contain letters, numbers and underscoreend-- 检查保留字local reserved_words {admin, root, system, user,moderator, administrator}local username_lower string.lower(username)for _, word in ipairs(reserved_words) doif username_lower word thenreturn false, This username is reservedendendreturn true, nil end-- JSON响应函数 local function send_json_response(status, message)ngx.status statusngx.header.content_type application/jsonlocal json_response string.format({status:%s,message:%s}, status, message)ngx.say(json_response) end-- 主验证函数 local function validate_post_params()ngx.req.read_body()local args ngx.req.get_post_args()-- 验证用户名if not args.username thensend_json_response(ngx.HTTP_BAD_REQUEST, Username is required)return falseendlocal is_valid, error_message validate_username(args.username)if not is_valid thensend_json_response(ngx.HTTP_BAD_REQUEST, error_message)return falseend-- 验证密码if not args.password or #args.password 6 thensend_json_response(ngx.HTTP_BAD_REQUEST, Password must be at least 6 characters long)return falseendreturn true end-- 导出模块 return {validate_post_params validate_post_params } location /api {content_by_lua_block {local validator require(validate_params)if validator.validate_post_params() thenngx.say(Validation passed)end}} 有效的用户名和密码 curl -X POST http://localhost:28443/api -d usernamevaliduserpasswordvalidpass123预期结果成功具体响应取决于你的成功处理逻辑 用户名太短 curl -X POST http://localhost:28443/api -d usernameabpasswordvalidpass123预期结果 {status:400,message:Username is too short (minimum 3 characters)}用户名太长 curl -X POST http://localhost:28443/api -d usernamethisusernameiswaytoolongpasswordvalidpass123预期结果 {status:400,message:Username is too long (maximum 20 characters)}用户名包含空格 curl -X POST http://localhost:28443/api -d usernameinvalid userpasswordvalidpass123预期结果 {status:400,message:Username cannot contain spaces}用户名不以字母开头 curl -X POST http://localhost:28443/api -d username1invaliduserpasswordvalidpass123预期结果 {status:400,message:Username must start with a letter and can only contain letters, numbers and underscore}用户名包含非法字符 curl -X POST http://localhost:28443/api -d usernameinvaliduserpasswordvalidpass123预期结果 {status:400,message:Username must start with a letter and can only contain letters, numbers and underscore}用户名是保留字 curl -X POST http://localhost:28443/api -d usernameadminpasswordvalidpass123预期结果 {status:400,message:This username is reserved}密码太短 curl -X POST http://localhost:28443/api -d usernamevaliduserpasswordshort预期结果 {status:400,message:Password must be at least 6 characters long}缺少用户名 curl -X POST http://localhost:28443/api -d passwordvalidpass123预期结果 {status:400,message:Username is required}缺少密码 curl -X POST http://localhost:28443/api -d usernamevaliduser预期结果 {status:400,message:Password must be at least 6 characters long}步骤 4: 测试和验证 重启 Nginx sudo systemctl restart nginx发送 POST 请求 可以使用 curl 或 Postman 测试 [roothcss-ecs-917b sbin]# curl -X POST http://localhost:28443/api -d usernametestpassword123456 Validation passed [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# curl -X POST http://localhost:28443/api -d usernametestpassword1 Password must be at least 6 characters long [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# curl -X POST http://localhost:28443/api -d usernametpassword1 Username must be at least 3 characters long [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]# curl -X POST http://localhost:28443/api Username must be at least 3 characters long [roothcss-ecs-917b sbin]# [roothcss-ecs-917b sbin]#ngx.HTTP_* 枚举值 在 OpenResty/Nginx 中ngx.HTTP_* 常用的状态码枚举值如下 成功类状态码 ngx.HTTP_OK -- 200 成功 ngx.HTTP_CREATED -- 201 已创建 ngx.HTTP_NO_CONTENT -- 204 无内容重定向类 ngx.HTTP_MOVED_TEMPORARILY -- 302 临时重定向 ngx.HTTP_MOVED_PERMANENTLY -- 301 永久重定向 ngx.HTTP_SEE_OTHER -- 303 其他位置 ngx.HTTP_NOT_MODIFIED -- 304 未修改客户端错误类 ngx.HTTP_BAD_REQUEST -- 400 错误请求 ngx.HTTP_UNAUTHORIZED -- 401 未授权 ngx.HTTP_FORBIDDEN -- 403 禁止访问 ngx.HTTP_NOT_FOUND -- 404 未找到 ngx.HTTP_METHOD_NOT_ALLOWED -- 405 方法不允许 ngx.HTTP_REQUEST_TIMEOUT -- 408 请求超时 ngx.HTTP_CONFLICT -- 409 冲突 ngx.HTTP_GONE -- 410 资源已不存在服务器错误类 ngx.HTTP_INTERNAL_SERVER_ERROR -- 500 内部服务器错误 ngx.HTTP_NOT_IMPLEMENTED -- 501 未实现 ngx.HTTP_BAD_GATEWAY -- 502 网关错误 ngx.HTTP_SERVICE_UNAVAILABLE -- 503 服务不可用 ngx.HTTP_GATEWAY_TIMEOUT -- 504 网关超时常用示例 -- 成功响应 ngx.status ngx.HTTP_OK ngx.say(Success)-- 参数错误 ngx.status ngx.HTTP_BAD_REQUEST ngx.say(Invalid parameters)-- 未授权 ngx.status ngx.HTTP_UNAUTHORIZED ngx.say(Authentication required)-- 服务器错误 ngx.status ngx.HTTP_INTERNAL_SERVER_ERROR ngx.say(Server error occurred)推荐使用场景 验证类使用 400-409身份认证使用 401-403资源相关使用 404-410服务器错误使用 500-504 建议根据具体业务场景选择最精准的状态码。
http://www.hkea.cn/news/14490322/

相关文章:

  • 关于网站备案及管理的授权书wordpress换nginx 数据库
  • 网站建设功能文档凡科网是什么
  • 网站开发与运营手机网站 普通网站
  • 海口网站建设推广wordpress php5.4支持
  • 文登市住房和城乡建设局网站昆明建设厅官方网站
  • 手机网站转换小程序唐山建设局网站 存量房 合同
  • 南宁网站建设找哪家好wordpress发送自定义邮件
  • 阿里云购买网站空间网站建设推广找stso88效果好
  • 网站备案号在哪儿查询黑龙江建设兵团知青网站
  • 做公司网站客户群体怎么找完美代码的网站
  • 免费源码网站西安网站建设网
  • 开福区城乡建设局网站字体怎么网wordpress
  • 苏州高端网站设计什么网站可以兼职做效果图
  • 做网站文案做展示网站要恋用什么程序
  • 净化网络环境网站该怎么做免费制作网站的基本流程
  • 怎么做网站 知乎app开发公司哪里做
  • 网站更新中怎么查看网站根目录
  • 科讯怎么建设网站宜宾seo快速排名
  • 网站建设策划模板苏州三石网络科技有限公司
  • 大连网站在哪备案网站公司名称大全
  • 网站前端用的到ps外贸网站建设服务机构
  • 建设银行网站怎么登陆不西安网络公司推荐
  • 建筑安全类网站网站服务器送一年
  • 网站设计与网页配色实例精讲品质好的形容词
  • 网站设计师和ui设计师织梦珠宝网站模板
  • 小说写作网站网站设计借鉴其它网站侵权吗
  • 重庆装修网站建设上海专业的网络推广
  • 此网站三天换一次域名客户型网站
  • gta5线下办公室网站正在建设自动发货 wordpress
  • 网站运营维护内容电商的网站如何做