处理 nginx 中呈现 500 页的 lua 错误
Handle lua error in nginx with rendering 500 page
我发现自己试图通过在 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
# Any route that starts with gallery/posts
location ~ ^/gallery/(.+) {
set $encoded_post_info ;
set_by_lua_block $decoded_post_info {
# if this code breaks how can I get it handled?
local base64 = require 'base64';
local decodedPostInfo = base64.decode(ngx.var.encoded_post_info);
return decodedPostInfo;
}
rewrite ^ /index.html break;
}
# Any route that doesn't have a file extension (e.g. /devices)
location / {
try_files $uri $uri/ /index.html;
}
}
}
您可以尝试 error_page 自定义错误页面
location /lua_error {
content_by_lua_block {
# Some error by lua
}
error_page 500 /500.html
}
如果您想捕获错误,您可能需要使用 pcall/xpcall 查看 Alexander 的评论。博士 here
我发现自己试图通过在 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
# Any route that starts with gallery/posts
location ~ ^/gallery/(.+) {
set $encoded_post_info ;
set_by_lua_block $decoded_post_info {
# if this code breaks how can I get it handled?
local base64 = require 'base64';
local decodedPostInfo = base64.decode(ngx.var.encoded_post_info);
return decodedPostInfo;
}
rewrite ^ /index.html break;
}
# Any route that doesn't have a file extension (e.g. /devices)
location / {
try_files $uri $uri/ /index.html;
}
}
}
您可以尝试 error_page 自定义错误页面
location /lua_error {
content_by_lua_block {
# Some error by lua
}
error_page 500 /500.html
}
如果您想捕获错误,您可能需要使用 pcall/xpcall 查看 Alexander 的评论。博士 here