Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

higress能否支持当请求404时返回一个类似Nginx的响应报文 #1514

Open
millinchen opened this issue Nov 17, 2024 · 1 comment
Open
Labels
good first issue Good for newcomers help wanted Extra attention is needed level/normal sig/controller

Comments

@millinchen
Copy link

higress当请求404时返回了空的响应报文,支持自定义加些返回响应报文吗?类似nginx下返回404 NOT Found的报文

@johnlanni johnlanni changed the title higress当请求404时返回空的响应报文 higress能否支持当请求404时返回一个类似Nginx的响应报文 Nov 18, 2024
@johnlanni johnlanni added the help wanted Extra attention is needed label Nov 18, 2024
@github-project-automation github-project-automation bot moved this to Todo in Higress Nov 18, 2024
@yunmaoQu
Copy link

hi, 我认为以下方案可以解决此issue:

  1. 使用默认后端(Default Backend)功能:

Higress 支持配置默认后端来处理所有未匹配到路由的请求(包括 404 情况)。你可以通过以下两种方式配置:

方案一:使用 Kubernetes Ingress 配置默认后端:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  defaultBackend:    # 配置默认后端
    service:
      name: custom-404-service  # 指向你的自定义404处理服务
      port:
        number: 80

方案二:在 Higress Console 控制台配置:

  1. 创建一个处理 404 的后端服务
  2. 在路由配置中添加一个默认路由规则,指向该后端服务
  3. 该服务可以返回自定义的 404 页面内容

你可以创建一个简单的服务来返回自定义的 404 响应,例如:

func handle404(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(404)
    w.Header().Set("Content-Type", "text/html")
    w.Write([]byte(`
        <html>
            <head><title>404 Not Found</title></head>
            <body>
                <h1>404 Not Found</h1>
                <p>The requested URL was not found on this server.</p>
            </body>
        </html>
    `))
}

从代码仓库的测试用例(httproute-default-backend.go)可以看到,Higress 确实支持默认后端的配置和测试。

这样配置后,当请求未匹配到任何路由规则时,请求会被转发到默认后端服务,从而返回自定义的 404 响应内容,而不是空响应。

建议:

  1. 建议创建专门的错误页面服务来处理各类错误响应
  2. 可以在错误页面中添加更多有用的信息,如错误描述、联系方式等
  3. 确保错误页面的响应速度,因为这会影响用户体验

通过以上配置,应该可以实现类似 Nginx 那样的自定义 404 响应功能。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed level/normal sig/controller
Projects
Status: Todo
Development

No branches or pull requests

3 participants