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设置相关推荐

  1. nginx php大文件上传,Nginx+PHP上传大文件设置

    nginx的修改 send_timeout 60; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeou ...

  2. nginx nodejs环境配置_nodejs + nginx + ECS阿里云服务器环境设置

    nodejs + nginx + ECS阿里云服务器环境设置 部署 nodejs ECS 基于 CentOS7.2 详细步骤:click 部署 nginx 安装 添加Nginx软件库: [root@l ...

  3. 蚂蚁分类信息系统Nginx伪静态规则支持二级域名设置方法

    蚂蚁分类信息系统Nginx伪静态规则支持二级域名设置方法 nginx环境中蚂蚁分类信息系统支持二级域名访问实现方法 1.后台生成所有城市目录 2.nginx伪静态增加配置 if ( $host ~* ...

  4. Nginx缓存以及反向代理缓存设置

    expires指令 (1).expires [time] server {listen 90;server_name localhost;location /czj {root /home;expir ...

  5. nginx php fpm 连接数,哪个php5-fpm设置为高并发连接数nginx

    请帮我调整php5-fpm和nginx的配置. 问题是我的php5-fpm日志不断报告慢脚本并杀死子线程. 专用服务器,quad xeon,32Gb Ram. 1个php应用程序/站点运行. Php应 ...

  6. Nginx负载均衡和反向代理设置

    Nginx负载均衡: 格式: upstream 别名 {    #别名一般要有意义,能看出是做什么的 server ip:端口;    #要实现负载的服务器的ip.端口号 }  例: upstream ...

  7. Nginx配置:worker_processes、worker_connections设置

    Nginx优化:配置worker_rlimit_nofile.worker_processes.worker_connections  2022-10-26 - 简书 (jianshu.com)htt ...

  8. Nginx应用(搭建网站、设置权限、用户认证)

    利用nginx服务搭建一个网站(www) 第一个历程:编写虚拟主机配置文件 cd /etc/nginx/conf.d/ #扩展名只能是.conf.因为主配置文件里加载的.conf #cat /etc/ ...

  9. Nginx如何反向代理网站和设置虚拟主机

    2019独角兽企业重金招聘Python工程师标准>>> # 反向代理其他网站服务器  # proxy reverse setting.  server {             l ...

最新文章

  1. Python培训分享:Python内置标准异常及其解析
  2. 哈佛最受学生欢迎的CS50课程来啦!「撕书教授」在家录了一套4K网课
  3. 未来CRM的趋势和预测
  4. 【模板】Dijkstra
  5. IOT/智能设备日志解决方案(1):概述
  6. springboot日志自定义路径无效及出现org.springframework.boot.context.properties.bind.BindException错误
  7. 深入理解Java内存架构
  8. go语言linux环境配置nginx,搭建wss
  9. HDU 4383 To The Moon 解题报告
  10. 7 计算机组成原理第五章 中央处理器 数据通路
  11. Science | 从结构生物学的角度理解人类mRNA剪接体分支位点的识别
  12. 特征点提取—尺度不变特征SIFT算法
  13. Audition报错:“无法应用设备设置,因为发生了以下错误:MME设备内部错误“
  14. 一个博士生接受怎样的训练是完整、全面的科研训练?
  15. 在Expression Blend中制作侧面为梯形的类棱柱体
  16. strtok用法详解
  17. Cannot determine archive format of /tmp/pip-req-build-
  18. Mathematica仿真竞争性Lotka-Volterra方程(3种群)
  19. 参赛必备 | “互联网+”大赛参赛攻略
  20. 常见的 App 安全问题

热门文章

  1. 基于AD Event日志检测哈希传递攻击
  2. Win10系统通过VMware安装Centos7,部署KVM安装WIN7虚拟机
  3. CSS实现内容颜色渐变的动画效果
  4. Powershell-查询主机名及IP地址
  5. error:no such partion错误解决
  6. Python爬虫入门教程09:多线程爬取表情包图片
  7. Uniapp + Sentry 实现错误日志监控
  8. 爬虫进阶-- 字体反爬终极解析
  9. ParameterizedType参数化类型
  10. 基金基础问题答疑汇总