http 自定义的Header字段应遵守一些惯例和最佳实践

2024-9-25 杜世伟 Nginx

在HTTP请求中,自定义的Header字段没有严格的格式要求,但有一些惯例和最佳实践需要遵循,以确保兼容性和可读性:

  1. 字段名称的格式
    • 字段名称应是大小写不敏感的:HTTP标准规定Header字段名称是不区分大小写的,因此X-Custom-Headerx-custom-header是等效的。
    • 使用中划线(Hyphen)作为分隔符:字段名称的单词之间通常使用中划线(-)分隔,例如X-Custom-Header
    • 避免使用下划线(Underscore):虽然技术上可以使用下划线(_),但它在某些情况下可能会引起兼容性问题,尤其是在某些代理服务器或旧版服务器上。推荐使用中划线。
  2. 字段值的格式
    • 字段值通常是字符串,可以包含任何字符,但最好遵循通常的编码格式。例如,二进制数据或特殊字符应当进行Base64编码或URL编码。
    • 避免使用未转义的控制字符(如换行符或回车符),它们会中断Header的格式。
  3. 推荐的命名规则
    • 过去自定义Header通常以X-开头,例如X-Custom-Header。不过,IETF(互联网工程任务组)后来不再建议这种命名规则,建议直接使用具备自解释性的名称。例如,使用Custom-Header代替X-Custom-Header
  4. 长度限制
    • 虽然HTTP协议没有对Header字段的长度设置明确的限制,但不同的服务器、代理和浏览器可能会对Header的大小设置上限,通常是8KB到16KB之间。对于自定义Header字段,最好确保其内容不会过长。
  5. 避免与标准Header冲突
    • 不要使用已经定义好的标准Header字段名,例如Content-TypeAuthorizationAccept等,以避免意外覆盖或冲突。
  6. 多个值的处理
    • 如果自定义Header中需要传递多个值,通常可以用逗号分隔,如:Custom-Header: value1, value2, value3


总结来说,自定义HTTP Header字段在格式上并没有太严格的要求,但遵循一些命名惯例、字符使用规则以及长度限制,有助于提高兼容性和避免潜在的问题。






标签: http nginx

评论(0) 浏览(9058)

那些实用的Nginx规则

2017-12-8 杜世伟 Nginx

1. 概述



大家都知道Nginx有很多功能模块,比如反向代理、缓存等,这篇文章总结下我们这些年实际环境中那些有用的Nginx规则和模块,大部分是用法的概括及介绍,具体细节在实际配置时再自行google。



2. 内置语法



先介绍Nginx默认已支持的内置功能,靠这些基本就满足大部分的web服务需求。


2.1 proxy代理


proxy常用于两类应用场景,一类是中转,如异地科学的上网方式,另外一类是到后端服务的负载均衡方案。

用反向代理时候,需要特别注意里面的域名默认是在nginx启动时候就解析了,除非reload否则一直用的是当初解析的域名,也就是说不能动态解析。

但这个问题是可以通过别的模块或者用内置字典变量方式来解决。

阅读全文>>

标签: linux nginx

评论(0) 浏览(15512)

500 internal server error

2017-12-1 杜世伟 Nginx

今天同事在使用开发服管理平台上传图片的时候服务器返回: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

评论(0) 浏览(12339)

HTTP协议的8种请求类型介绍

2015-8-5 杜世伟 Nginx

HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: 

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 
GET:向特定的资源发出请求。 
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。 
PUT:向指定资源位置上传其最新内容。 
DELETE:请求服务器删除Request-URI所标识的资源。 
TRACE:回显服务器收到的请求,主要用于测试或诊断。 

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。

标签: http get post

评论(0) 浏览(12144)

什么是反向代理服务器

2014-11-15 杜世伟 Nginx

什么是反向代理服务器

        含义:

        ‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’

        ‘代理服务器’比较好理解,例如需要访问某网站,不想或不能直接访问,例如网络的原因、隐私的原因等,我们就连接一个代理服务器,这样对于这个网站来说,访问他的用户是这个代理服务器,而不是我们自己

        ‘反向’的意思我们没有通过代理服务器访问网站,但网站却在自己服务器前面加了一个代理,我们输入网址发起请求后,请求先到了这个代理服务器,代理服务器再把请求转给网站服务器

阅读全文>>

标签: nginx 负载均衡 反向代理服务器

评论(0) 浏览(6355)

负载均衡之LVS:Linux Virtual Server

2014-10-7 杜世伟 Nginx

负载均衡之LVS:Linux Virtual Server
1)简介
        LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

阅读全文>>

标签: linux 负载均衡 lvs

评论(0) 浏览(11346)

Nginx之HAProxy实现负载均衡

2014-10-3 杜世伟 Nginx

一、什么是Haproxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

阅读全文>>

标签: nginx 负载均衡 rewrite haproxy

评论(0) 浏览(7668)

Nginx之upstream负载均衡

2014-9-2 杜世伟 Nginx

upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称test.net。这个名称可以任意指定,在后面需要用到的地方直接调用即可。

阅读全文>>

标签: nginx upstream 负载均衡

评论(0) 浏览(7165)

Nginx Location配置总结

2014-8-10 杜世伟 Nginx

语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

~ 开头表示区分大小写的正则匹配

~*  开头表示不区分大小写的正则匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/ 通用匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

阅读全文>>

标签: nginx location rewrite

评论(0) 浏览(19238)

Nginx服务器架构简析

2014-7-3 杜世伟 Nginx

模块化结构的思想是一个很久的概念,但也正是成熟的思想造就了Nginx的巨大优越性。

我们知道Nginx从总体上来讲是有许多个模块构成的。习惯将Nginx分为5大模块分别为:核心模块,标准HTTP模块,可选HTTP模块,邮件服务模块和第三方模块。

阅读全文>>

标签: nginx upstream 负载均衡

评论(0) 浏览(14871)

Powered by emlog 沪ICP备2023034538号-1