Nginx的HTTP Code444和307设置
nginx 444
介绍
当没有显式指定default server的时候,Nginx会使用第一个server来作为默认的响应server,即使请求的Host并没有匹配到server_name。
这是为了兼容老旧的一些不带Host的HTTP请求而做的设置。官文描述: How nginx processes a request
此时可能存在一定的风险。如果有非备案的名解析到了你的Public IP上,而你的Web服务对该域名的请求有所响应的话,可能会导致Public IP被运营商封锁。
解决办法:
在nginx中添加一个default server,并在default server中设置return 444;
。此时Nginx就不会响应请求,除非请求的Host是配置的。
1 2 3 4 5 |
server { listen 80 default_server; server_name _; return 444; } |
此时请求服务器,在Chrome中显示的页面如下:
和499类似,444不是标准的HTTP status code,而是Nginx自己设立的状态码,参见444 CONNECTION CLOSED WITHOUT RESPONSE
设置了444过后,nginx收到不匹配的Host请求的话,不会有任何响应。比起404之类,另外一个好处就是可以节省一点点的带宽。
Reference
- Why is nginx responding to any domain name?
- Module ngx_http_rewrite_module
HTTP 307 Temporary Redirect
介绍
随着网络安全越发重要,越来越多的网站都从http迁移到了https。但迁移到https之前分发出去的链接都是http,为了兼容以前的链接,就需要做一个redirect,将http的请求redirect到https中。
最常见的redirect方式就是301 Moved Permanently或者302 Found, 将http重定向到https中。
对于普通的GET请求,这种方式是完全可以的。但当请求是POST的时候,由于一些历史原因,一些浏览器和库收到301或302的时候,会将原本的POST请求转为GET请求发送。此时POST的body会丢失,导致请求出问题。
如果要redirect POST请求,则需要使用307 Temporary Redirect来进行redirect。RFC 7231中对于307的一个描述”Note: This status code is similar to 302 (Found), except that it does not allow changing the request method from POST to GET. “
nginx 例子
一个GET是301, POST是307的nginx配置例子
1 2 3 4 5 6 7 8 |
server { listen 80; server_name www.fake.com; if ($request_method = POST) { return 307 https://$host$request_uri; } return 301 https://$host$request_uri; } |
国内各大站的处理方式
查看了国内BAT,国外Google,facebook和amazon是如何从http重定向到https的。发现除了腾讯外,其他几个大站,即使请求是GET,也是直接甩307。
如下是几大巨头网站主页http redirect https的截图:
百度从http redirect到https时,直接使用的是307。Chrome中访问http://www.baidu.com的截图如下:
淘宝从http redirect到https时,直接使用的是307。Chrome中访问http://www.taobao.com的截图如下:
腾讯从http redirect到https时,使用的是302。Chrome中访问http://www.qq.com的截图如下:
google从http redirect到https时,直接使用的是307。Chrome中访问http://www.google.com的截图如下:
facebook从http redirect到https时,直接使用的是307。Chrome中访问http://www.facebook.com的截图如下:
amazon从http redirect到https时,直接使用的是307。Chrome中访问http://www.amazon.com的截图如下:
Reference
- RFC 7231
- 301 MOVED PERMANENTLY
- List of HTTP status codes
- Nginx loses POST variable with http -> https redirect
- Why doesn’t HTTP have POST redirect?
- Difference between HTTP redirect codes
- 307 Temporary Redirect: What It Is and How to Fix It
Nginx的HTTP Code444和307设置相关推荐
- nginx php大文件上传,Nginx+PHP上传大文件设置
nginx的修改 send_timeout 60; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeou ...
- nginx nodejs环境配置_nodejs + nginx + ECS阿里云服务器环境设置
nodejs + nginx + ECS阿里云服务器环境设置 部署 nodejs ECS 基于 CentOS7.2 详细步骤:click 部署 nginx 安装 添加Nginx软件库: [root@l ...
- 蚂蚁分类信息系统Nginx伪静态规则支持二级域名设置方法
蚂蚁分类信息系统Nginx伪静态规则支持二级域名设置方法 nginx环境中蚂蚁分类信息系统支持二级域名访问实现方法 1.后台生成所有城市目录 2.nginx伪静态增加配置 if ( $host ~* ...
- Nginx缓存以及反向代理缓存设置
expires指令 (1).expires [time] server {listen 90;server_name localhost;location /czj {root /home;expir ...
- nginx php fpm 连接数,哪个php5-fpm设置为高并发连接数nginx
请帮我调整php5-fpm和nginx的配置. 问题是我的php5-fpm日志不断报告慢脚本并杀死子线程. 专用服务器,quad xeon,32Gb Ram. 1个php应用程序/站点运行. Php应 ...
- Nginx负载均衡和反向代理设置
Nginx负载均衡: 格式: upstream 别名 { #别名一般要有意义,能看出是做什么的 server ip:端口; #要实现负载的服务器的ip.端口号 } 例: upstream ...
- Nginx配置:worker_processes、worker_connections设置
Nginx优化:配置worker_rlimit_nofile.worker_processes.worker_connections 2022-10-26 - 简书 (jianshu.com)htt ...
- Nginx应用(搭建网站、设置权限、用户认证)
利用nginx服务搭建一个网站(www) 第一个历程:编写虚拟主机配置文件 cd /etc/nginx/conf.d/ #扩展名只能是.conf.因为主配置文件里加载的.conf #cat /etc/ ...
- Nginx如何反向代理网站和设置虚拟主机
2019独角兽企业重金招聘Python工程师标准>>> # 反向代理其他网站服务器 # proxy reverse setting. server { l ...
最新文章
- Python培训分享:Python内置标准异常及其解析
- 哈佛最受学生欢迎的CS50课程来啦!「撕书教授」在家录了一套4K网课
- 未来CRM的趋势和预测
- 【模板】Dijkstra
- IOT/智能设备日志解决方案(1):概述
- springboot日志自定义路径无效及出现org.springframework.boot.context.properties.bind.BindException错误
- 深入理解Java内存架构
- go语言linux环境配置nginx,搭建wss
- HDU 4383 To The Moon 解题报告
- 7 计算机组成原理第五章 中央处理器 数据通路
- Science | 从结构生物学的角度理解人类mRNA剪接体分支位点的识别
- 特征点提取—尺度不变特征SIFT算法
- Audition报错:“无法应用设备设置,因为发生了以下错误:MME设备内部错误“
- 一个博士生接受怎样的训练是完整、全面的科研训练?
- 在Expression Blend中制作侧面为梯形的类棱柱体
- strtok用法详解
- Cannot determine archive format of /tmp/pip-req-build-
- Mathematica仿真竞争性Lotka-Volterra方程(3种群)
- 参赛必备 | “互联网+”大赛参赛攻略
- 常见的 App 安全问题