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中包含下划线,则忽略掉,部署后就获取不到。

解决方案:

  • 在header里不要用 “_” 下划线,可以用驼峰命名或者其他的符号(如减号-)代替。nginx默认忽略掉下划线可能有些原因。

  • 在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. Nginx:常用基本命令与异常处理

    Nginx日志 - ./nginx-1.6.0-ems/logs/nginx.pid Nginx启动时应该使用cmd等命令行工具启动,双击启动同样会产生进程但会造成异常,判断条件是 ./nginx-1 ...

  2. Nginx使用默认配置启动异常处理

    Ps1:错误问题:nginx: [error] OpenEvent("Global\ngx_reload_5988") failed (2: The system cannot f ...

  3. TCMalloc优化MySQL、Nginx、Redis内存管理

    TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多.TCMalloc是 goo ...

  4. python自动化开发-[第九天]-异常处理、进程

    今日概要: 1.异常处理使用 2.进程 3.paramiko模块使用 一.异常处理 1.常见的错误异常 #错误异常一 print(a) #NameError #错误异常二 int('sdadsds') ...

  5. python 异常处理、进程

    目录: 异常处理 python进程 python并发之多进程 一.异常处理(try...except...) 1.程序中难免出现错误,而错误分成两种: a.语法错误: b.逻辑错误(逻辑错误) 2.异 ...

  6. Linux环境Nginx安装、调试以及PHP安装

    linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5 1.编译安装Nginx 官网:http://wiki.nginx.org/Install 下 ...

  7. Linux环境Nginx安装与调试以及PHP安装

    linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 1.编译安装Nginx 官网:http://wiki.nginx.org/Instal ...

  8. 2.scala控制结构、函数、异常处理

    2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...

  9. 2.爬虫 urlib库讲解 异常处理、URL解析、分析Robots协议

    1.异常处理 URLError类来自urllib库的error模块,它继承自OSError类,是error异常模块的基类,由request模块产生的异常都可以通过这个类来处理. from urllib ...

随机推荐

  1. Azure KeyVault设置策略和自动化添加secrets键值对

    一. 关于Azure Key Vault Azure 密钥保管库可帮助保护云应用程序和服务使用的加密密钥和机密. 借助 Key Vault,可使用密钥来加密密钥和机密(例如身份验证密钥.存储帐户密钥. ...

  2. 【洛谷P1972】HH的项链 离线+树状数组

    题目大意:静态查询序列区间颜色数. 题解:对于一个查询区间 [l , r] ,若有两个相同颜色的点在这个区间中,则总是取下标靠近端点 r 的颜色计入答案贡献.对于每个下标,记录下在这个下标之前,且距离 ...

  3. #ifndef HeaderName_h #define HeaderName_h #endif 使用详解

    想必很多人都看到过头文件中写有:#ifndef HeaderName_h                                                #define HeaderNa ...

  4. 洛谷 P1064 金明的预算方案(01背包问题)

    传送门:Problem 1064 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是 “01”背包问题的变形. 如果不考虑买附件必 ...

  5. laravel Schema 查看索引是否存在

    Schema::connection('')->table($tableName, function (Blueprint $table) { $sm = Schema::getConnecti ...

  6. aop 初探

    1.首先是配置文件: 上图是让aop配置正确,不报红: 完整代码: <?xml version="1.0" encoding="UTF-8"?> & ...

  7. PowerDesigner使用(设置继承,实现)

    1.File—New Mode 2添加4个class,1个接口(基本的添加工具都在这里面) 3.class1的设置名字,设置方法 3.设置继承,实现 4.编辑class2,class3继承父类的属性. ...

  8. Linux记录-shell一行代码杀死进程(收藏)

    ps -ef |grep hello |awk '{print $2}'|xargs kill -9

  9. Hadoop记录-hadoop介绍

    1.hadoop是什么? Hadoop 是Apache基金会下一个开源的大数据分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构. ...

  10. bzoj千题计划303:bzoj4827: [Hnoi2017]礼物

    https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: ...