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常见异常分析的更多相关文章

  1. Selenium常见异常分析及解决方案

    pycharm中导入selenium报错 现象: pycharm中输入from selenium import webdriver, selenium标红 原因1: pycharm使用的虚拟环境中没有 ...

  2. Redis_常见JedisConnectionException异常分析

    最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis.Redis常用命令学习:http://redis.io/commandsRedis官方推荐Java客户端Jedis ...

  3. Android异常分析(转)

    关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...

  4. systemd的新特性及unit常见类型分析与awk用法示列

    简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 系统引导的新特性 系统引导时实现服务启动: 按需激活进程: 系统状态快照: ...

  5. flume常见异常汇总以及解决方案

    flume常见异常汇总以及解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际生产环境中,我用flume将kafka的数据定期的往hdfs集群中上传数据,也遇到过一系列的坑 ...

  6. Java常见异常(Runtime Exception )小结(转)

    原文链接:Java常见异常(Runtime Exception )小结 Java异常体系结构呈树状,其层次结构图如图 1所示:           本文重在Java中异常机制的一些概念.写本文的目的在 ...

  7. Nginx常见错误与问题之解决方法技术指南

      Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的 ...

  8. Nginx源码分析:3张图看懂启动及进程工作原理

    编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」.   导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...

  9. JVM之调优及常见场景分析

    JVM调优 GC调优是最后要做的工作,GC调优的目的可以总结为下面两点: 减少对象晋升到老年代的数量 减少FullGC的执行时间 通过监控排查问题及验证优化结果,可以分为: 命令监控:jps.jinf ...

随机推荐

  1. bzoj3451 Normal

    题意:点分治每次随机选重心,求期望复杂度. 发现一次点分治的复杂度就是点分树上每个节点的子树大小之和.(并没有发现......) 看这个. 注意这个写法有问题,随便来个菊花图就是n2了. 每一层点分治 ...

  2. A1083. List Grades

    Given a list of N student records with name, ID and grade. You are supposed to sort the records with ...

  3. 【模板】kmp

    引理:当计算第 \(i\) 位的失配指针时,若 \(j_0\) 是一个候选条件,那么小于 \(j_0\) 的最大候选条件是 \(fail[j_0]\). 证明:反证法.假设存在 \(j_1\),使得\ ...

  4. mysql 多表管理修改

    update t_res_ys,cms_article_data,cms_article set cms_article_data.jsdata=t_res_ys.jsdata ,cms_articl ...

  5. textarea 字体限制,超出部分不显示并及时显示还剩字体个数

    1)HTML <textarea class="box" ></textarea > 2)JQ: $(function(){ $(".box&qu ...

  6. 把pandas dataframe转为list方法

    把pandas dataframe转为list方法 先用numpy的 array() 转为ndarray类型,再用tolist()函数转为list

  7. Web Scraping with Python

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  8. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

  9. bash变量详解

    bash变量详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家都知道Shell是一门脚本语言,脚本语言的最好的优点就是我们写的代码不需要编辑就可以直接运行,当然你也可以把它归 ...

  10. GO语言的进阶之路-协程和Channel

    GO语言的进阶之路-协程和Channel 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 看过我之前几篇博客小伙伴可能对Golang语言的语法上了解的差不多了,但是,如果想要你的代码 ...