http 自定义的Header字段应遵守一些惯例和最佳实践
在HTTP请求中,自定义的Header字段没有严格的格式要求,但有一些惯例和最佳实践需要遵循,以确保兼容性和可读性:
-
字段名称的格式:
-
字段名称应是大小写不敏感的:HTTP标准规定Header字段名称是不区分大小写的,因此
X-Custom-Header
和x-custom-header
是等效的。 -
使用中划线(Hyphen)作为分隔符:字段名称的单词之间通常使用中划线(
-
)分隔,例如X-Custom-Header
。 -
避免使用下划线(Underscore):虽然技术上可以使用下划线(
_
),但它在某些情况下可能会引起兼容性问题,尤其是在某些代理服务器或旧版服务器上。推荐使用中划线。
-
字段名称应是大小写不敏感的:HTTP标准规定Header字段名称是不区分大小写的,因此
-
字段值的格式:
- 字段值通常是字符串,可以包含任何字符,但最好遵循通常的编码格式。例如,二进制数据或特殊字符应当进行Base64编码或URL编码。
- 避免使用未转义的控制字符(如换行符或回车符),它们会中断Header的格式。
-
推荐的命名规则:
-
过去自定义Header通常以
X-
开头,例如X-Custom-Header
。不过,IETF(互联网工程任务组)后来不再建议这种命名规则,建议直接使用具备自解释性的名称。例如,使用Custom-Header
代替X-Custom-Header
。
-
过去自定义Header通常以
-
长度限制:
- 虽然HTTP协议没有对Header字段的长度设置明确的限制,但不同的服务器、代理和浏览器可能会对Header的大小设置上限,通常是8KB到16KB之间。对于自定义Header字段,最好确保其内容不会过长。
-
避免与标准Header冲突:
-
不要使用已经定义好的标准Header字段名,例如
Content-Type
、Authorization
、Accept
等,以避免意外覆盖或冲突。
-
不要使用已经定义好的标准Header字段名,例如
- 多个值的处理:
-
如果自定义Header中需要传递多个值,通常可以用逗号分隔,如:
Custom-Header: value1, value2, value3
。
总结来说,自定义HTTP Header字段在格式上并没有太严格的要求,但遵循一些命名惯例、字符使用规则以及长度限制,有助于提高兼容性和避免潜在的问题。
那些实用的Nginx规则
1. 概述
大家都知道Nginx有很多功能模块,比如反向代理、缓存等,这篇文章总结下我们这些年实际环境中那些有用的Nginx规则和模块,大部分是用法的概括及介绍,具体细节在实际配置时再自行google。
2. 内置语法
先介绍Nginx默认已支持的内置功能,靠这些基本就满足大部分的web服务需求。
2.1 proxy代理
proxy常用于两类应用场景,一类是中转,如异地科学的上网方式,另外一类是到后端服务的负载均衡方案。
用反向代理时候,需要特别注意里面的域名默认是在nginx启动时候就解析了,除非reload否则一直用的是当初解析的域名,也就是说不能动态解析。
但这个问题是可以通过别的模块或者用内置字典变量方式来解决。
500 internal server error
今天同事在使用开发服管理平台上传图片的时候服务器返回:500 internal server error/nginx让我帮忙看下什么原因造成的
浏览器返回错误信息的时候抛出nginx,于是我登录服务器查看nginx的错误日志信息,发下如下信息
2017/12/01 10:47:49 [crit] 12775#0: *18 open() "/var/lib/nginx/tmp/client_body/0000000003" failed (13: Permission denied)
可以看到提示/var/lib/nginx/权限不足
可以通过以下命令查看权限信息
ls -la /var/lib/nginx
drwx------ 3 nginx nginx 4096 Sep 18 17:20 nginx
标签: linux error nginx server crit
HTTP协议的8种请求类型介绍
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:
OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
GET:向特定的资源发出请求。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。
什么是反向代理服务器
什么是反向代理服务器
含义:
‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’
‘代理服务器’比较好理解,例如需要访问某网站,不想或不能直接访问,例如网络的原因、隐私的原因等,我们就连接一个代理服务器,这样对于这个网站来说,访问他的用户是这个代理服务器,而不是我们自己
‘反向’的意思我们没有通过代理服务器访问网站,但网站却在自己服务器前面加了一个代理,我们输入网址发起请求后,请求先到了这个代理服务器,代理服务器再把请求转给网站服务器
负载均衡之LVS:Linux Virtual Server
负载均衡之LVS:Linux Virtual Server1)简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
Nginx之HAProxy实现负载均衡
一、什么是Haproxy
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
标签: nginx 负载均衡 rewrite haproxy
Nginx之upstream负载均衡
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称test.net。这个名称可以任意指定,在后面需要用到的地方直接调用即可。Nginx Location配置总结
语法规则: location [=|~|~*|^~] /uri/ { … }
= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
Nginx服务器架构简析
模块化结构的思想是一个很久的概念,但也正是成熟的思想造就了Nginx的巨大优越性。
我们知道Nginx从总体上来讲是有许多个模块构成的。习惯将Nginx分为5大模块分别为:核心模块,标准HTTP模块,可选HTTP模块,邮件服务模块和第三方模块。
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(72)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)