使用渲染500页处理Nginx中的lua错误

我发现自己正在尝试通过在Nginx中渲染500页(而不是在openresty中出现内部错误的那个白屏)来处理lua错误,但目前没有成功。 有人有任何输入如何重定向到错误路线(或其他方式)以显示自定义500页吗?

这是我的Nginx配置:

worker_processes  1;
error_log logs/error.log;

events {
  worker_connections 1024;
 }

http{
    server {
        server_name localhost;

        root /usr/local/openresty/nginx/html

        # 任何以gallery/posts开头的路由
        location ~ ^/gallery/(.+) {
          set $encoded_post_info $1;

          set_by_lua_block $decoded_post_info {
            # 如果这段代码出问题,我该如何处理?
            local base64 = require 'base64';
            local decodedPostInfo = base64.decode(ngx.var.encoded_post_info);

            return decodedPostInfo;
          }

          rewrite ^ /index.html break;
        }

        # 任何没有文件扩展名的路由(例如/devices)
        location / {
            try_files $uri $uri/ /index.html;
        }
    }
}
点赞
用户8090398
用户8090398

你可以尝试使用 error_page 实现自定义错误页面。

location /lua_error {
  content_by_lua_block {
    # Some error by lua
  }
  error_page 500 /500.html
}

假如你想要捕获错误,你可能需要查看 Alexander 的评论,使用 pcall/xpcall。相关文档 here

2021-01-14 04:32:52