当前位置: 首页 > 知识库问答 >
问题:

从命名位置返回自定义nginx错误

漆雕疏珂
2023-03-14

我有一个配置,我想从指定位置返回自定义错误。然而,我收到的却是标准的nginx错误页面。不过,我可以从未命名的位置获取自定义错误。

为了重现这个问题,我创建了这个简单的基于docker的设置:

Dockerfile:

FROM nginx:1.17.9

COPY default.conf /etc/nginx/conf.d/default.conf
COPY 404.html /usr/share/nginx/html/404.html

违约形态:

server {
    listen       80;
    server_name  localhost;

    #recursive_error_pages on;

    location = /404.html {
        root   /usr/share/nginx/html;
        internal;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location / {
        # used in a more complex setup, this is just a minimal config
        # # See http://stackoverflow.com/a/20694873
        error_page 404 = @fwd;
        return 404;
    }

    location @fwd  {
       root /usr/share/nginx;
       error_page 404 /404.html;
    }
}

50x错误在这里并不有趣,我已经从nginx docker映像中调整了配置。

使用404以外的东西重定向到指定位置并没有什么区别。

404.html:

<!DOCTYPE html>
<html>
  <head><title>404</title></head>
  <body>
    my 404
  </body>
</html>

然后启动docker运行--rm-p 8080:80--name mynginx mynginx。

现在将浏览器指向http://localhost:8080/index.html应返回标准欢迎页面,而http://localhost:8080/inexistent.html将返回一个内部nginx404页面,而不是我配置的自定义页面。

有没有一种方法可以在指定的位置内实际完成这项工作?

共有1个答案

杨鸿畅
2023-03-14

在探索这个问题的过程中,我发现了上的recursive\u error\u页面 --但愚蠢地留下了注释。当然没用了。

未评论指令修复问题!

 类似资料:
  • 改变json输出策略 默认使用阿里的fastjson进行json输出 JSON.toJSONString(obj) 如果要更换输出策略,操作方式如下: @Override protected void initApiConfig(ApiConfig apiConfig) { ... // 自定义json格式输出,将null字符串变成"" apiConfig.setJson

  • 网关默认对业务结果进行合并,然后返回统一的格式。 针对alipay.story.find接口,微服务端返回结果如下: { "name": "白雪公主", "id": 1, "gmtCreate": 1554193987378 } 网关合并后,最终结果如下 { "alipay_story_find_response": { "msg": "Succe

  • 故事是,我创建了一个自定义 API 路由 ,用于提取任何帖子类型的帖子。在本地,它可以完美地工作(MAMP),但在多个生产服务器(不同的环境)上,它会返回500错误。 适用于本地的API路由: http://wordpress.local/wp-json/wp-post-modal/v1/any-post-type?slug=modal-页 生产中的API路由示例(表明API路由确实存在): <

  • 这里有一些代码来表明我的意图(Meter是一个域类): 我想出了几种处理这个问题的方法。首先,有可能创建类似 然后使用异常处理程序来呈现自定义的errorpage(可能包含到仪表列表的链接或任何合适的内容)。 但是使用这个解决方案,我必须重复许多控制器方法的前5行(如edit、delete)。 有没有一种优雅的方法来防止重复这些行很多次?

  • 按照在symfony2中加载应用程序的自定义配置文件时发布的建议,我陷入了名称空间问题。 在中,我有两个文件: 上诉。php: 和Configuration.php: 似乎我犯了某种错误,将文件命名为正在执行: 结果: PHP致命错误:在/var/www/dev.investmentopportunities中找不到类“AppBundle\DependencyInjection\Configura

  • 问题内容: 我正在编写一个返回经度和纬度的Android应用,但是location保留Null值。 请看看您是否能了解原因,整天困扰着我。代码如下: 问题答案: 如果自设备启动以来GPS从未获得过位置,则位置对象将为null。您可以做的一件事是尝试获取GPS位置和网络位置,然后检查两个位置是否都很好(或哪个更好)并使用该位置。