使用Nginx Ingress 优雅显示错误页面

 更新时间:2023年09月24日 10:41:36   作者:moon  
这篇文章主要为大家介绍了使用Nginx Ingress 优雅显示错误页面实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一. Nginx Ingress 优雅显示错误页面

官网

  • 让所有经过 Nginx Ingress 暴露出去的域名,在请求到错误页面的时候(状态码为:4xx,5xx等)给用户一个优雅的页面显示,而不直接显示4xx或5xx的报错,避免给用户不好的使用体验

1. 镜像制作

  • 将显示的页面全部放在 www 目录中
[root@yunwei-k8s-addon1-test custom-error]# ll www/
-rw-r--r--. 1 yeemiao yeemiao 415 3月  13 2019 403.html
-rw-r--r--. 1 yeemiao yeemiao 412 3月  13 2019 404.html
-rw-r--r--. 1 root    root    412 8月  16 13:40 500.html
-rw-r--r--. 1 root    root    412 8月  16 13:40 501.html
-rw-r--r--. 1 yeemiao yeemiao 415 3月  13 2019 502.html
-rw-r--r--. 1 yeemiao yeemiao 409 3月  13 2019 503.html
-rw-r--r--. 1 root    root    412 8月  16 13:40 504.html

# 目录结构
[root@yunwei-k8s-addon1-test custom-error]# ll
-rw-r--r--. 1 root root  72 8月  16 13:37 Dockerfile
drwxr-xr-x. 2 root root 118 8月  16 13:41 www
FROM registry.k8s.io/ingress-nginx/nginx-errors:v20230505
COPY www /www

2. nginx-error

  • 放在和 Nginx-Ingress 控制器同样的名称空间中
apiVersion: v1
kind: Service
metadata:
  name: nginx-errors
  namespace: ingress-nginx 
  labels:
    app.kubernetes.io/name: nginx-errors
    app.kubernetes.io/part-of: ingress-nginx
spec:
  selector:
    app.kubernetes.io/name: nginx-errors
    app.kubernetes.io/part-of: ingress-nginx
  ports:
  - port: 80
    targetPort: 8080
    name: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-errors
  namespace: ingress-nginx 
  labels:
    app.kubernetes.io/name: nginx-errors
    app.kubernetes.io/part-of: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: nginx-errors
      app.kubernetes.io/part-of: ingress-nginx
  template:
    metadata:
      labels:
        app.kubernetes.io/name: nginx-errors
        app.kubernetes.io/part-of: ingress-nginx
    spec:
      containers:
      - name: nginx-error-server
        image: harbor.yeemiao.com:8443/library/custom-nginx-error:20230816
        ports:
        - containerPort: 8080

配置

  • 修改Nginx-Ingress 的启动参数
# 加入参数,如果 nginx-error 和 Nginx-Ingress在同一名称空间,直接加入参数即可,如果 nginx-error 服务不在 Nginx-Ingress 控制器同样的 Namespace,请将 POD_NAMESPACE 改为他所在的名称
- --default-backend-service=$(POD_NAMESPACE)/nginx-errors
# 修改 Nginx-Ingress 控制器的configmap
[root@k8s-alone-1 manifest]# kubectl  -n ingress-nginx edit cm nginx-configuration
apiVersion: v1
data:
  allow-snippet-annotations: "true"
  custom-http-errors: 403,404,413,500,501,502,503,504    # 增加这个配置

3. 验证

  • 进入 nginx-ingress的控制器查看nginx 配置文件 /etc/nginx/nginx.conf, 过滤 error_page 是否有相关配置
error_page 403 = @custom_upstream-default-backend_403;                                                           
        error_page 404 = @custom_upstream-default-backend_404;                                                           
        error_page 413 = @custom_upstream-default-backend_413;                                                           
        error_page 500 = @custom_upstream-default-backend_500;                                                           
        error_page 502 = @custom_upstream-default-backend_502;                                                           
        error_page 503 = @custom_upstream-default-backend_503;                                                           
        error_page 504 = @custom_upstream-default-backend_504;

以上就是使用Nginx Ingress 优雅显示错误页面的详细内容,更多关于Nginx Ingress显示错误页面的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx服务安装及软件升级

    Nginx服务安装及软件升级

    这篇文章主要为大家介绍了Nginx服务的安装以及软件升级的步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 阿里云Nginx配置https实现域名访问项目(图文教程)

    阿里云Nginx配置https实现域名访问项目(图文教程)

    这篇文章主要介绍了阿里云Nginx配置https实现域名访问项目(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Nginx 反向代理与负载均衡运行小结

    Nginx 反向代理与负载均衡运行小结

    Nginx还支持对后端服务器进行健康检查,当某个服务器不可用时,Nginx会自动将流量重定向到其他可用的服务器,这篇文章给大家分享Nginx 反向代理与负载均衡是如何运行的,感兴趣的朋友一起看看吧
    2024-03-03
  • nginx.conf配置文件结构小结

    nginx.conf配置文件结构小结

    本文主要介绍了nginx.conf配置文件结构小结,nginx.conf主要由events、http、server、location、upstream等块配置项和一些行配置项组成,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目

    如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目

    Nginx 是一个高性能的 HTTP 和反向代理服务,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,这篇文章主要介绍了如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目,需要的朋友可以参考下
    2023-11-11
  • Nginx访问控制与参数调优的方法

    Nginx访问控制与参数调优的方法

    这篇文章主要介绍了Nginx访问控制与参数调优的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Nginx启动显示80端口占用问题的解决方案

    Nginx启动显示80端口占用问题的解决方案

    这篇文章主要介绍了Nginx启动显示80端口占用问题的解决方案,文中通过代码示例和图文讲解的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案

    nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案

    这篇文章主要介绍了nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案,本文分步骤结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • nginx修改配置限制恶意爬虫频率

    nginx修改配置限制恶意爬虫频率

    这篇文章主要介绍在nginx中怎样修改相关配置,以限制恶意爬虫频率的方法,有需要的朋友参考下。
    2016-08-08
  • nginx基于IP的多虚拟主机实现

    nginx基于IP的多虚拟主机实现

    如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上,本文主要介绍了nginx基于IP的多虚拟主机实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论