如何利用小游戏开发框架提升企业小程序的用户体验与运营效率
1168
2022-09-28
nginx 、apache、tomcat自定义返回错误页面配置
目的:解决客户端访问公司域名站点出现报错时返回生硬报错代码问题,进行返回错误页面自定制,提供良好用户体验。
本文将依托nginx,从几个角度讲述几个web(nginx、apache、tomcat)服务,如何进行错误页面自定义。
首先梳理一下web服务器常见的错误类型:
④4xx 错误
400 Bad Request 请求出现语法错误。
401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。
403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。
405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)
406 Not Acceptable 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。
407 Proxy Authentication Required 类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)
408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)
409 Conflict 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)
410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)
411 Length Required 服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)
412 Precondition Failed 请求头中指定的一些前提条件失败(HTTP 1.1新)。
413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414 Request URI Too Long URI太长(HTTP 1.1新)。
416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)
⑤5xx 服务器错误
500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。
501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。
502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器源码天空,但该服务器返回了非法的应答。
503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)
505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)
配置实例:
1.nginx作为域名服务器,提供静态、动态域名服务,定制错误页面返回配置方法;
在域名监听主目录下建立error页面文件夹,将错误页面文件上传到文件夹,nginx配置如下:
#xx.jp##静态页面!
2.nginx作为反向代理服务器,定制错误页面返回配置方法;
server { listen 80; server_name xx.com; location / { root /home/ index index.html index.htm;# redirecet server error pages to the static pag ! error_page 401 = /error/401.html; error_page 403 = /error/403.html; error_page 404 = /error/404.html; error_page 500 = /error/500.html; error_page 502 503 504 = /error/503.html; } }#xx.jp##动态页面! server { listen 80; server_name xx.com; location / { root /home/ index index.php index.html index.htm;# redirecet server error pages to the static pag !# redirecet server error pages to the static pag /50x.htmlerror_page 400 /error/400.html;error_page 401 /error/401.html; error_page 403 /error/403.html; error_page 404 /error/404.html; error_page 408 /error/408.html; error_page 500 /error/500.html; error_page 502 503 504 /error/502.html; location ~ .*\.(php|php5)?$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } } }
经简单测试,nginx反响代理只能拦截502错误代码!可以将错误页面直接跳转到公司其它服务器的错误页面,配置方法;
3.nginx作为反向代理服务器,apache作为后端服务器,apache自定义错误页面配置如下:
server { listen 80; server_name aa.com; location / {error_page 502 503 504 #将返回500系列的错误页面,直接跳转的xx.com的503错误页面(此页面要真实存在)。# proxy_next_upstream error timeout invalid_header proxy_pass proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;中间省略********************88 } }}#上面的配置方法,页面会跳转到,下面的配置遇到错误页面不会跳转,在原有域名请求连接页面展示。#port 80 server { listen 80; server_name tz1.xx.com; proxy_redirect off; location / {# proxy_next_upstream error timeout invalid_header proxy_pass proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;中间省略********************88# redirecet server error pages to the static pag !error_page 408 /error/408. error_page 500 /error/500.html;error_page 502 503 504 /error/503.html; }#新建一个location 指定一下监听目录(/data/nperror),在监听目录内建立 error文件夹,将错误页面上传的error文件夹内。 location /error { root /data/nperror;} }
apache默认自带有错误返回页面,默认处于注释状态,如果公司没有特殊要求,只要将注释关掉即可,下面的配置的例子 874~878行是我自己添加的(将错误页面文件上传到/var/ErrorDocument 401 /error/401.html
875 ErrorDocument 403 /error/403.html
876 ErrorDocument 404 /error/404.html
877 ErrorDocument 500 /error/500.html
878 ErrorDocument 503 /error/503.html
879
880 ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
881 # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
882 # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
883 # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
884 ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
885 ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
886 ErrorDocument 410 /error/HTTP_GONE.html.var
887 ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
888 ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
889 ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
890 ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
891 ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
892 # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
893 ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
894 ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
895 # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
896 ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
4.nginx作为反向代理服务器,tomcat作为后端服务器,tomcat自定义错误页面配置如下:
将错误页面上传到域名监听目录,tomcat的默认应用放在\webapps\ROOT目录里:修改webapps\ROOT\WEB-INF\web.xml
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~