首页 > 系统相关 >NGINX error_page

NGINX error_page

时间:2024-04-26 18:23:02浏览次数:29  
标签:set header 11.11 NGINX html location error page proxy

背景

网络架构中需要遇到apisix,想做个apisix 访问出错的兜底方案

nginx配置

其中http://11.11.11.11:9080 是apisix访问地址

server {
	listen       80;
	server_name  sfimplat;
	index  index.html index.htm;
	root   /app/sfimplat_micro/web;
	#charset koi8-r;
	access_log  logs/access.log  main;
	
	location /sfimplat {
		proxy_set_header Host $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_pass http://11.11.11.11:9080;

	} 

	error_page   500 502 503 504  /50x.html;

	location = /40x.html {
		root   html;
	}
	location = /50x.html {
		root   html;
	}
}

实操

error_page 可以捕获状态码,因此最开始我是这样配置的

server {
	listen       80;
	server_name  sfimplat;
	index  index.html index.htm;
	root   /app/sfimplat_micro/web;
	access_log  logs/access.log  main;
	
	location /sfimplat {
		proxy_set_header Host $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_pass http://11.11.11.11:9080;

	}

	location @fallback {
		proxy_pass http://11.11.11.11:18084;
	}  

	#error_page   500 502 503 504  /50x.html;
	error_page 503 = @fallback;

	location = /40x.html {
		root   html;
	}
	location = /50x.html {
		root   html;
	}
}

反复试验后发现流量无法转入 location @fallback

后来发现 error_page默认仅仅捕获nginx本身的响应状态码,如果想捕获到nginxupstream的状态码,应该配置proxy_intercept_errors on;

server {
	listen       80;
	server_name  sfimplat;
	index  index.html index.htm;
	root   /app/sfimplat_micro/web;
	access_log  logs/access.log  main;


	location /sfimplat {
		proxy_set_header Host $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_pass http://11.11.11.11:9080;
		proxy_intercept_errors on;
		error_page 503 = @fallback;
	}

	location @fallback {
		proxy_set_header Host $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_pass http://11.11.11.11:18084;
	}  

	error_page   500 502 503 504  /50x.html;

	location = /40x.html {
		root   html;
	}
	location = /50x.html {
		root   html;
	}
}

参考资料:
http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
https://stackoverflow.com/questions/66651410/nginx-fallback-to-alternative-upstream-on-502-and-503

标签:set,header,11.11,NGINX,html,location,error,page,proxy
From: https://www.cnblogs.com/alioth01/p/18160644

相关文章

  • Nginx 源码安装
     Nginx官网:https://nginx.org参考:Nginx配置常用参数梳理https://www.jb51.net/server/285538k8k.htmnginx配置参数详解https://blog.csdn.net/u013286192/article/details/136418472Nginx配置详解https://www.runoob.com/w3cnote/nginx-setup-intro.html查看nginx开启......
  • 列表删除按钮,分页错位问题解决思路 table delete page loadTable
    列表删除按钮,分页错位问题解决思路this.$api('/xxx/xxx/deletexxx',{ids:id}).then(res=>{if(res.status!==20)returnthis.$Message.destroy()this.$Message.success('删除成功')if(this.tableData.leng......
  • 通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
    通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中是无法记录到访问的. 一般上传大文件流程: 首先修改php.ini文件: 参数设置说明 fi......
  • nginx高级篇之location高级实战
    nginxlocation高级实战location是nginx的核心重要功能,可以设置网站的访问路径,一个webserver会有多个路径,那么location就得设置多个。Nginx的locaiton作用是根据用户请求的URI不同,来执行不同的应用。针对用户请求的网站URL进行匹配,匹配成功后进行对应的操作。1.语法介绍Sy......
  • nginx高性能负载均衡集群
    高性能负载均衡集群一、集群是什么简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一......
  • 解决Unchecked runtime.lastError: Cannot create item with duplicate id meterSpher
    uncheckedruntime.lasterror:cannotcreateitemwithduplicateidXXX谷歌浏览器扩展插件开发问题_chromeuncheckedruntime.lasterror:cannotcreate-CSDN博客javascript-IssueswithContentMenuandOpeningTabs-ChromeExtension-StackOverflowchrome.run......
  • nginx高级篇之基于IP的访问限制
    一、基于IP的访问限制官网http://nginx.org/en/docs/http/ngx_http_access_module.html1.配置语法句法:allowaddress|CIDR|unix:|all;默认:—语境:http,server,location,limit_except允许访问指定的网络或地址。如果指定了特殊值unix:(1.5.1),则允许访......
  • GatewayWorker 配置 WSS 利用 nginx 代理 wss
    首先,本地开发的测试一般都能通信成功而且,如果客户端为【http】网络协议的网站,那么js代码基本就是类似——varws=newWebSocket("ws://47.104.110.54:8283");的连接方式出错率是很低的,基本不做赘述最大的难点,个人认为是WSS服务配置…【操作环境】系统:......
  • error: possibly undefined macro: AC_CHECK_HEADERS
    Hi,Ihavebeengettingthebelowerrorafterrunning./bootstrap:autoreconf:running:/usr/bin/autoconf--force--warnings=allconfigure.ac:133:error:possiblyundefinedmacro:AC_CHECK_HEADERSIfthistokenandothersarelegitimate,pleaseusem4_pat......
  • Nginx 配置文件 nginx.conf
    #帮助限制Nginx进程的权限,从而减少系统遭受恶意攻击的风险#通常,出于安全考虑,推荐不使用root用户运行网络服务#user<username>[groupname];#设置Nginx将启动的工作进程数目(默认为1)#worker_processes7;#可以填数字#worker_processesauto;#auto代表......