nginx常见异常分析
1、nginx不转发消息头header问题
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
2、nginx 反向代理 proxy_set_header 自定义 header 头无效
String staffId = request.getHeader("staffId");
String sn = request.getHeader("sn");
String site_id = request.getHeader("site_id");
String photo_type = request.getHeader("photo_type");
前两个参数都可以获取,后两个参数通过nginx代理后始终为null。原因是nginx对自定义的header name的字符做了限制,默认underscores_in_headers为off,表示如果header name中包含下划线,则忽略掉,部署后就获取不到。
解决方案:
1、在header里不要用 “_” 下划线,可以用驼峰命名或者其他的符号(如减号-)代替。nginx默认忽略掉下划线可能有些原因。
2、在nginx里的 nginx.conf文件中配置http的部分添加:underscores_in_headers on;(默认值是off)
3、Nginx不识别中文
用windows记事本打开文件再保存会保存为UTF-8 BOM编码。这个编码在nginx中是不能被识别中文的。
我们只需要用notepad打开nginx.conf,选择编码为UTF-8无BOM编码后,查看中文显示是否正常,然后按Ctrl+s保存文件即可。
4、memc_nginx+srcache_nginx+memcached 遇到的问题
在使用 memc_nginx+srcache_nginx+memcached 时,出现了 memcached 只缓存响应头,响应主体却丢失了。具体文
章参见:《memc_nginx+srcache_nginx+memcached 构建透明的动态页面缓存》。
缓存的内容被截断了。
查了些文档是由 upstream 响应截断时不报错导致的。
解决办法:
1. 打上下面的补丁
https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.4.2-upstream_truncation.patch
2. 使用最新版的 nginx
nginx 在 1.5.3 版本修复了这个 bug。
nginx purge 更新缓存 404 错误
nginx 默认安装就会带有反向代理的功能,但想要更好的使用,还得配备 frickle.com 的 ngx_cache_purge 模块,用于清除指定 URL 的缓存。 ngx_cache_purge 在安装的 nginx 的时候一起编译进去了,缓存功能一直正常。
文件地址: www.abc.com/includes/templates/zcen/buttons/english/button_in_cart.gif
如下图:
nginx purge 清理缓存失败
但是清理缓存的时候竟然会 404
地址: www.abc.com/purge/includes/templates/zcen/buttons/english/button_in_cart.gif
百思不得其解,网上遇到 nginx 清理缓存出现 404 的用户不在少数,网上一共有如下 3 中情况:
1、 ngx_cache_purge 版本与 nginx 版本不匹配
换了一个版本的 purge,发现依旧无效
2、 nginx 启动方法不对
很多人安装完 nginx,仅仅 reload 一次 nginx,实际上应该 stop 之后在 start。这不是我的解决方法。
3、 purge 未编译到 nginx 中
肯定不是这个问题, nginx –V 能查看编译参数
因为有其他事情,这个事情暂且搁置了,一天闲来无事,看着 nginx 的配置文件发呆,突然发现自己犯了一个很
大的错误: purge 的 location 放错了位置。
错误配置文件:
location /
{
proxy_pass http://xxx.ttlsa.com;
include proxy.conf;
}
location ~ .*\.(png|jpg|gif|GIF|jpeg|JPG|PNG|bmp|BMP|JPEG)?$
{
include proxy.conf;
proxy_pass http://xxx.ttlsa.com;
expires 1h;
access_log off;
}
location ~ /purge(/.*)
{
allow 127.0.0.1;
allow 192.168.12.0/24;
proxy_cache_purge cache_one $host$1$is_args$args;
}
正确配置文件:
location /
{
proxy_pass http://xxx.ttlsa.com;
include proxy.conf;
}
location ~ /purge(/.*)
{
allow 127.0.0.1;
allow 192.168.12.0/24;
proxy_cache_purge cache_one $host$1$is_args$args;
}
location ~ .*\.(png|jpg|gif|GIF|jpeg|JPG|PNG|bmp|BMP|JPEG)?$
{
include proxy.conf;
proxy_pass http://xxx.ttlsa.com;
expires 1h;
access_log off;
}
细心的兄弟很快能发现我把 purge 的位置放错了,每次更新图片缓存的时候它都只匹配到了图片后缀的
location,接着就返回了 404,根本没有匹配到 purge 这个 location 的机会。把 purge 调到前面就正常了。
nginx常见异常分析的更多相关文章
- Selenium常见异常分析及解决方案
pycharm中导入selenium报错 现象: pycharm中输入from selenium import webdriver, selenium标红 原因1: pycharm使用的虚拟环境中没有 ...
- Redis_常见JedisConnectionException异常分析
最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis.Redis常用命令学习:http://redis.io/commandsRedis官方推荐Java客户端Jedis ...
- Android异常分析(转)
关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...
- systemd的新特性及unit常见类型分析与awk用法示列
简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 系统引导的新特性 系统引导时实现服务启动: 按需激活进程: 系统状态快照: ...
- flume常见异常汇总以及解决方案
flume常见异常汇总以及解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际生产环境中,我用flume将kafka的数据定期的往hdfs集群中上传数据,也遇到过一系列的坑 ...
- Java常见异常(Runtime Exception )小结(转)
原文链接:Java常见异常(Runtime Exception )小结 Java异常体系结构呈树状,其层次结构图如图 1所示: 本文重在Java中异常机制的一些概念.写本文的目的在 ...
- Nginx常见错误与问题之解决方法技术指南
Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...
- Nginx源码分析:3张图看懂启动及进程工作原理
编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」. 导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...
- JVM之调优及常见场景分析
JVM调优 GC调优是最后要做的工作,GC调优的目的可以总结为下面两点: 减少对象晋升到老年代的数量 减少FullGC的执行时间 通过监控排查问题及验证优化结果,可以分为: 命令监控:jps.jinf ...
随机推荐
- 洛谷 P4408 逃学的小孩 解题报告
P4408 [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?&q ...
- oracle调用DLL
具体步骤:1.创建Oracle Library Create Library AAA as 'C:\UserData\xuxia\TestProc\Debug\TestProc.dll' 可以通 ...
- Azure HDInsight 上的 Spark 群集配合自定义的Python来分析网站日志
一.前言:本文是个实践博客,演示如何结合使用自定义库和 HDInsight 上的 Spark 来分析日志数据. 我们使用的自定义库是一个名为 iislogparser.py的 Python 库. 每步 ...
- Hadoop、Hbase基本命令及调优方式
HDFS基本命令 接触大数据挺长时间了,项目刚刚上完线,趁着空闲时间整理下大数据hadoop.Hbase等常用命令以及各自的优化方式,当做是一个学习笔记吧. HDFS命令基本格式:Hadoop fs ...
- bracketed-paste-magic:zle:41: not enough arguments for -U
原因是zsh的插件出问题了,解法方法如下: 把 ~/.oh-my-zsh/lib/misc.zsh 文件中的第一段 if 注释掉 OK 啦 # ]]; then # for d in $fpath; ...
- Linux中无权限使用sudo
提示:$USER is not in the sudoers file. This incident will be reported. 解决方法: 切换到root用户,su 编辑sudo配置文件,v ...
- 解码(ByteBuffer): CharsetDecoder.decode() 与 Charset.decode() 的不同
今天测试的时候发现一个问题: ByteBuffer inputBuffer = ByteBuffer.allocate(1024); StringBuilder inputData = new Str ...
- Solr7.1---简单搜索
本文环境基于上一节. and搜索 两种用法: apple AND banana +apple +banana [+是一元操作符,要求求后面的查询部分必需在文档中出现.AND是二元操作符,要求其左右两端 ...
- TCP协议、UDP协议、端口、套接字
TCP协议优缺点 可靠:反馈数据是否送达 效率低:需要创建连接请求,连接成功后发数据 UDP协议优缺点 不可靠:无任何反馈 效率高:不创建连接请求,直接发数据 端口(0~65535,其中0~1023用 ...
- OS + CentOS 7 / centos 7 / VirtualBox /vegrant
s VirtualBox:解决VirtualBox安装时libSDL-1.2.so.0()错误的问题. http://www.sklinux.com/983 为Centos6.2安装VirtualBo ...