




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 33 nginx 常见内部参数 ,错误总结 上海纽斯达科技 Nginx常见错误与解决方法 上海纽斯达科技有限公司 2016-10-25 文档状态 目的: 在 Nginx 服务器出现故障时,能快速定位并解决相关错误。 保密: 本文档仅供内部使用,请勿外传 概述: 2 / 33 Nginx常见错误与问题之解决方法技术指南。 安装环境: 系统环境: redhat enterprise 64bit 1、 Nginx 常见启动错误 有的时候初次安装 nginx 的时候会报这样的错误 sbin/nginx -c conf/ 报错内容: sbin/nginx: error while loading shared libraries: : cannot open shared object file: No such file or directory 启动时如果报异常 error while loading shared libraries: : cannot open 3 / 33 shared object file: No such file or directory 这说明我们的环境还不是和启动需要 小小的配置一下 解决方法 (直接运行 ): 32位系统 rootsever lib# ln -s /usr/local/lib/ /lib 64 位系统 rootsever lib# ln -s /usr/local/lib/ /lib64 然后执行 ps -ef | grep nginx 查看 nginx 进程确认是否真的已经启动了,在进程列表里会 有最起码两个, worker(nginx 工作进程 )和 master root 4349 1 0 02:24 ? 00:00:00 nginx: master process sbin/nginx -c conf/ 4 / 33 nginx 4350 4349 0 02:24 ? 00:00:00 nginx: worker process root 4356 28335 0 02:30 pts/1 00:00:00 grep nginx NGINX 就 OK了 2、 400 bad request 错误的原因和解决办法 配置相关设置如下 . client_header_buffer_size 16k; large_client_header_buffers 4 64k; 根据具体情况调整,一般适当调整值就可以。 3、 Nginx 502 Bad Gateway 错误 在和中分别有这样两个配置项: max_execution_time 和 request_terminate_timeout。 5 / 33 这两项都是用来配置一个 PHP脚本的最大执行时间的。当超过这个时间时, PHP-FPM 不只会终止脚本的执行, 还会终止执行脚本的 Worker 进程。所以 Nginx 会发现与自己通信的连接断掉了,就会返回给客户端 502错误。 以 PHP-FPM 的 request_terminate_timeout=30 秒时为例,报 502 Bad Gateway 错误的具体信息如下: 1) Nginx错误访问日志: 2016/09/19 01:09:00 error 27600#0: *78887 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: , server: , request: POST / HTTP/, upstream: fastcgi:/unix:/dev/shm/:, host: , referrer: http:/ 2) PHP-FPM报错日志: 6 / 33 WARNING: child 25708 exited on signal 15 (SIGTERM) after seconds from start 所以只需将这两项的值调大一些就可以让 PHP脚本不会因为执行时间长而被终止了。 request_terminate_timeout 可以覆盖max_execution_time, 所以如果不想改全局的,那只改 PHP-FPM的配置就可以了。 此外要注意的是 Nginx 的 upstream 模块中的 max_fail 和fail_timeout 两项。有时 Nginx与上游服务器的通信只是偶然断掉了, 但 max_fail 如果设置的比较小的话,那么在接下来的fail_timeout 时间内, Nginx都会认为上游服务器挂掉了,都会返回 502错误。 所以可以将 max_fail调大一些,将 fail_timeout调小一些。 7 / 33 4、 Nginx出现的 413 Request Entity Too Large 错误 这个错误一般在上传文件的时候会出现, 编辑 Nginx主配置文件,找到 http段,添加 client_max_body_size 10m; /设置多大根据自己的需求作调整 . 如果运行 php 的话这个大小 client_max_body_size 要和中的如下值的最大值一致或 者稍大,这样就不会因为提交数据大小不一致出现的错误。 post_max_size = 10M upload_max_filesize = 2M 5、解决 504 Gateway Time-out(nginx) 遇到这个问题是在升级 discuz论坛的时候遇到的一般看来 , 这种情况可能是由于 nginx默认的 8 / 33 fastcgi 进程响应的 缓冲区太小造成的 , 这将导致 fastcgi进程被挂起 , 如果你的 fastcgi服务 对这个挂起处理的不好 , 那么最后就极有可能导致 504 Gateway Time-out,现在的网站 , 尤其某 些论坛有大量的回复和很多内容的 , 一个页面甚至有几百K。默认的 fastcgi 进程响应的缓冲 区 是 8K, 我们可以设置大点在里 , 加入: fastcgi_buffers 8 128k这表示设置 fastcgi缓冲区为 8128 当然如果您在进行某一项即时的操作 , 可能需要 nginx的超时参数调大点,例如设置成 90秒: send_timeout 90;只是调整了这两个参数 , 结果就是没有再显示那个超时 , 效果不错 Nginx 中关于与上游服务器通信超时时间的配置 factcgi_connect/read/send_timeout。 9 / 33 以 Nginx超时时间为 90秒, PHP-FPM超时时间为 300秒为例,报 504 Gateway Timeout错误时的 Nginx错误访问日志如下: 2016/09/19 00:55:51 error 27600#0: *78877 upstream timed out (110: Connection timed out) while reading response header from upstream, client: , server: , request: POST / HTTP/, upstream: fastcgi:/unix:/dev/shm/:, host: , referrer: http:/ 调高这三项的值之后, 504 错误也解决了。 而且这三项配置可以配置在 http、 server 级别,也可以配置在 location 级别。担心影响其他应用的话,就配置在自己应用的 location 中吧。 要注意的是 factcgi_connect/read/send_timeout 是对FastCGI生效的,而 proxy_connect/read/send_timeout 是对 proxy_pass 生效10 / 33 的。 配置举例: location .php$ root /home/cdai/; include fastcgi_params; 1、 400 bad request 错误的原因和解决办法 配置 相关设置如下 . client_header_buffer_size 16k; large_client_header_buffers 4 64k; 根据具体情况调整,一般适当调整值就可以。 2、 Nginx 502 Bad Gateway 错误 proxy_next_upstream error timeout invalid_header http_500 http_503; 或 者 尝 试 设 置 : large_client_header_buffers 4 32k; 3、 Nginx 出现的 413 Request Entity Too Large 错误 这个错误一般在上传文件的时候会出现, 编辑 Nginx 主配置文件 , 找到 http段, 添加 client_max_body_size 10m; /设置多大根据自己 的 需 求 作 调 整 . 如 果 运 行 php 的 话 这 个 大 小 client_max_body_size 要和 中的如下值的最大值一致或 11 / 33 者稍大,这样就不会因为提交数据大小不一致出现的错误。 post_max_size = 10M upload_max_filesize = 2M 4、解决 504 Gateway Time-out(nginx) 遇到这个问题是在升级 Discuz 论坛的时候遇到的一般看来 , 这种情况可能是由于 nginx 默 认的 fastcgi 进程响应的缓冲区太小造成的 , 这将导致 fastcgi 进程被挂起 , 如果你的 fastcgi 服务对这个挂起处理的不好 , 那么最后就极有可能导致 504 Gateway Time-out 现在的网站 , 尤其某些论坛有大量的回复和很多内容的 , 一个页面甚至有几百 K。 默认的 fastcgi 进程响应的缓冲区是 8K, 我们可以设置大点 ,在 里 , 加入: fastcgi_buffers 8 128k 这表示设置 fastcgi 缓冲区为 8128k 当然如果您在进行某一项即时的操作 , 可能需要 nginx 的超时参数调大点,例如设置成 60 秒: send_timeout 60; 只是调整了这两个参数 , 结果就是没有再显示那个超时 , 可以说效果不错 , 但是也可能是由 于其他的原因 , 目前关于 nginx 的资料不是很多 , 很多事情都需要长期的经验累计才有结果 , 期待您的发现哈 ! 5、如何使用 Nginx Proxy 一台服务器运行 Tomcat 为 8080 端口 ,IP:8080,另一台机器 IP: 想 通过访问 http:/ 即可访问 tomcat 服务 .配置如下 : 在 的 上配置如下 : server listen 80; server_name location / 12 / 33 proxy_pass http:/:8080; include /usr/local/nginx/conf/; 6、如何关闭 Nginx 的 LOG access_log /dev/null; error_log /dev/null; Nginx配置总结 目录 一、基本配置 . 2 二 、 正 则 表 达式 . 3 三、 Location 正 则 写法 . 8 13 / 33 四、Rewrite . 9 1 、规则 . 9 2 、 Flag 标志位 . 9 3 、 If 指令与全局变量 . 10 参考文14 / 33 献 . 12 一、基本配置 指令上下文 二、 正则表达式 正则表达式表: NGINX 技术总结报告 一、 Nginx 基础知识 1、简介 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 站点开发的,它已经在该站点运行超 过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是, Nginx 已经因为它的稳定性、丰富15 / 33 的功能集、示例配置文件和低系统资源的消耗而闻名了。 更多的请见官方 wiki: http:/ 2、 Nginx的优点 nginx做为 HTTP服务器,有以下几项基本特性: 1) 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲 2) 无缓存的反向代理加速,简单的负载均衡和容错 3) FastCGI,简单的负载均衡和容错 4) 模块化的结构。包括 gzipping, byte ranges, chunked responses, 以及 SSI-filter 等 filter。 如果由 FastCGI或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。 5) 支持 SSL 和 TLS SNI Nginx 专为性能优化而开发,性能是其最重要的考量 , 实现16 / 33 上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验 , 有报告表明能支持高达 50,000 个并发连接数。 Nginx具有很高的稳定性。其它 HTTP 服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前 apache一旦上到 200个以上进程, web响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。 nginx官方表示保持 10,000个没有活动的连接,它只占内存,所以类似 DOS这样的攻击对 nginx 来说基本上是毫无用处的。就稳定性而言 , nginx比 lighthttpd 更胜一筹。 Nginx 支持热部署。它的启动特别容易 , 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行 进行升级。 Nginx采用 master-slave模型 , 能够充分利用 SMP 的优势,且能够减少工作进程在磁盘 I/O 的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。 Nginx 代码质量非常高,代码很规范, 手法成熟, 模块扩展也很容易。特别值得一提的是强大的 Upstream 与 Filter17 / 33 链。 Upstream 为诸如 reverse proxy, 与其他服务器通信模块的编写奠定了很好的基础。而 Filter 链最酷的部分就是各个 filter不必等待前一个 filter执行完毕。它可以把前一个 filter 的输出做为当前 filter 的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之 前把压缩流转向客户端。 Nginx采用了一些 os提供的最新特性如对 sendfile (Linux +), accept-filter (FreeBSD +), TCP_DEFER_ACCEPT (Linux +) 的支持,从而大大提高了性能 二、 Nginx 安装及调试 1、安装 ./configure make & make install 18 / 33 cd ./ 2、 nginx 编译安装 /configure -user=www -group=www -prefix=/usr/local/nginx/ -with-http_stub_status_module -with-openssl=/usr/local/openssl make & make install 更详细的模块定制与安装请参照官方 wiki. 3、 Nginx 配置文件测试: # /usr/local/nginx/sbin/nginx -t /Debug 配置文件的关键命令需要重点撑握 . XX/12/16 09:08:35 info 28412#0: the configuration file /usr/local/nginx/conf/ 19 / 33 syntax is ok XX/12/16 09:08:35 info 28412#0: the configuration file /usr/local/nginx/conf/ was tested successfully 3、 Nginx 启动: # /usr/local/nginx/sbin/nginx 4、 Nginx 配置文件修改重新加载: # kill -HUP cat /usr/local/nginx/logs/ 5、起停方式简便方法 copy sbin/nginx 到 /bin目录下 20 / 33 nginx -s reload #重新引导配置文件 kill -HUP cat /etc/nginx/logs/ #重新加载配置文件 kill -USR1 cat /etc/nginx/logs/ #切换日志 nginx -s stop #停服务 nginx #启动 三、 Nginx 访问控制 1、 Nginx 身份证验证 #cd /usr/local/nginx/conf #mkdir htpasswd /usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone 21 / 33 #添加用户名为 linuxtone New password: (此处输入你的密码 ) Re-type new password: (再次输入你的密码 ) Adding password for user http:/tongji/data/(目录存在 /data/www/wwwroot/tongji/data/目录 root /data/www/wwwroot/count; auth_basic LT-COUNT-TongJi; auth_basic_user_file /usr/local/nginx/conf/htpasswd/tongji; 2、 Nginx 禁止访问某类型的文件 . 如, Nginx 下禁止访问 *.txt文件,配置方法如下 . 22 / 33 location * .(txt|doc)$ if (-f $request_filename) root /data/www/wwwroot/linuxtone/test; #rewrite . 可以重定向到某个 URL break; 方法 2: location * .(txt|doc)$ root /data/www/wwwroot/linuxtone/test; deny all; 23 / 33 实例 : 3、使用 ngx_http_access_module 限制 ip访问 location / deny ; allow /24; allow /16; deny all; 24 / 33 4、 Nginx 下载限制并发和速率 limit_zone linuxtone $binary_remote_addr 10m; server listen 80; server_name ; index ; root /data/www/wwwroot/down; #Zone limit location / limit_conn linuxtone 1; limit_rate 20k; 25 / 33 . 只允许客房端一个线程 ,每个线程 20k. 四、 Nginx 日志处理 1、 Nginx 日志切割 #contab -e 59 23 * * * /usr/local/sbin/ /dev/null 2&1 # cat /usr/local/sbin/ #!/bin/bash log_dir=/data/logs time=date +%Y%m%d 26 / 33 /bin/mv $log_dir/access_ $log_dir/access_$ kill -USR1 cat /var/run/ 2、利用 AWSTATS分析 NGINX日志 设置好 Nginx日志格式 ,然后利用 awstats进行分析 . 请参考 : http:/ 1. 安装完成 Nginx 后无法站外访问? 刚安装好 nginx一个常见的问题是无法站外访问,本机 wget、telnet 都正常。而服务器之外,不管是局域网的其它主机还是互联网的主机都无法访问站点。如果用 telnet 的话,提示: 正在连接到 .不能打开到主机的连接, 在端口 80: 连接失败 如果用 wget 命令的话,提示: 27 / 33 Connecting to :80. failed: No route to host. 如果是以上的故障现象,很可能是被 CentOS 的防 火墙把 80端口拦住了,尝试执行以下命令,打开 80端口: iptables -I INPUT -p tcp -dport 80 -j ACCEPT 然后用: /etc/iptables status 查看当前的防火墙规则,如果发现有这样一条: ACCEPT tcp - /0 /0 tcp dpt:80 就说明防火墙规则已经添加成功了,再在站外访问就正常了。 2. 编译 pcre错误 (源码安装 nginx 必须先要装 pcre) libtool: compile: unrecognized option -DHAVE_CONFIG_H 28 / 33 libtool: compile: Try libtool -help for more information. make1: * Error 1 make1: Leaving directory /usr/local/src/ make: * all Error 2 解决办法:安装 g+,别忘了重新 configure apt-get install g+ apt-get install build-essential make clean ./configure make 29 / 33 3. make出错 make: * No rule to make target build, needed by default. Stop. ./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using -with-openssl= option. ubuntu 下解决办法 : apt-get install openssl apt-get ins
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 住宅楼基础工程安全管理方案
- 2025年城市污水处理厂深度处理工艺能耗分析与降低策略评估报告
- 2025年教育行业质量评估与认证体系评价标准与方法研究报告
- 2025年机械制造企业服务化转型中的智能制造与工业4.0解决方案报告
- 2025年成人教育终身学习体系构建与平台运营中的教育投资分析报告
- 信访信用治理制度的生成与作用逻辑
- 气球广告公司合伙协议书
- 河南省南阳市宛城区等2地2025-2026学年高二上学期开学考试思想政治试卷(含答案)
- 广东省深圳市桃源居中澳实验学校2025-2026学年高三上学期第一次月考物理试题
- 《通勤班车租赁合同》模板
- 发电厂发电机原理与结构
- 人才服务可行性方案
- (高清版)DZT 0004-2015 重力调查技术规范(150 000)
- 打扫卫生的社会实践报告
- 小学《道德与法治课程标准2022版》测试题
- 市政污水管道施工组织设计
- 服装陈列课件
- 产品认证控制程序
- 新教材-人教A版高中数学选择性必修第一册-第一章-空间向量与立体几何-知识点及解题方法提炼汇总
- 国家临床版20肿瘤形态学编码(M码)
- 国开电大组织行为学任务四调查报告
评论
0/150
提交评论