Nginx常见错误与解决方法_第1页
Nginx常见错误与解决方法_第2页
Nginx常见错误与解决方法_第3页
Nginx常见错误与解决方法_第4页
Nginx常见错误与解决方法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海纽斯达科技上海纽斯达科技 Nginx 常见错误与解决方法常见错误与解决方法上海纽斯达科技有限公司上海纽斯达科技有限公司2014-10-25文档状态文档状态目的:目的:在 Nginx 服务器出现故障时,能快速定位并解决相关错误。保密:保密:本文档仅供内部使用,请勿外传概述:概述:Nginx 常见错误与问题之解决方法技术指南。安装环境:安装环境:系统环境:redhat enterprise 6.5 64bit文档编号文档编号Nsdkj-778保保 密密 等等 级级限制作作 者者刘恒亮最后完成日期最后完成日期2014-12-25审审 核核 人人最后审核日期最后审核日期2014-12-25文件状态

2、:文件状态:【 】草稿草稿【 】修改稿修改稿【】正式发布正式发布批批 准准 人人最后批准日期最后批准日期2014-12-251 1、NginxNginx 常见启动错误常见启动错误 有的时候初次安装 nginx 的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 启动时如果报异常 error while loadin

3、g shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 这说明我们的环境还不是和启动需要小小的配置一下 解决方法(直接运行):32 位系统 rootsever lib# ln -s /usr/local/lib/libpcre.so.1 /lib64 位系统 rootsever lib# ln -s /usr/local/lib/libpcre.so.1 /lib64然后执行 ps -ef | grep nginx 查看 nginx 进程确认是否真的已经启动了,在进程

4、列表里会有最起码两个, worker(nginx 工作进程)和 master(nginx 主进程) root 4349 1 0 02:24 ? 00:00:00 nginx: master process sbin/nginx -c conf/nginx.confnginx 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 2、400400 badbad requestrequest 错误的原因和解决办法错误的原因

5、和解决办法配置 nginx.conf 相关设置如下.client_header_buffer_size 16k;large_client_header_buffers 4 64k;根据具体情况调整,一般适当调整值就可以。3 3、NginxNginx 502502 BadBad GatewayGateway 错误错误在 php.ini 和 php-fpm.conf 中分别有这样两个配置项:max_execution_time 和request_terminate_timeout。这两项都是用来配置一个 PHP 脚本的最大执行时间的。当超过这个时间时,PHP-FPM 不只会终止脚本的执行,还会终止

6、执行脚本的 Worker 进程。所以 Nginx 会发现与自己通信的连接断掉了,就会返回给客户端 502 错误。以 PHP-FPM 的 request_terminate_timeout=30 秒时为例,报 502 Bad Gateway 错误的具体信息如下:1)Nginx 错误访问日志: 2013/09/19 01:09:00 error 27600#0: *78887 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 01

7、, server: , request: POST /index.php HTTP/1.1, upstream: fastcgi:/unix:/dev/shm/php-fcgi.sock:, host: , referrer: http:/ 报错日志: WARNING: child 25708 exited on signal 15 (SIGTERM) after 21008.883410 seconds from start所以只需将这两项的值调大一些就可以让 PHP 脚本不会因为执行时间长而被终止了。request_terminate_timeout 可以覆盖 max_execution_

8、time,所以如果不想改全局的 php.ini,那只改 PHP-FPM 的配置就可以了。此外要注意的是 Nginx 的 upstream 模块中的 max_fail 和 fail_timeout 两项。有时 Nginx 与上游服务器(如 Tomcat、FastCGI)的通信只是偶然断掉了,但 max_fail 如果设置的比较小的话,那么在接下来的 fail_timeout 时间内,Nginx 都会认为上游服务器挂掉了,都会返回 502 错误。所以可以将 max_fail 调大一些,将 fail_timeout 调小一些。4 4、NginxNginx 出现的出现的 413413 RequestR

9、equest EntityEntity TooToo LargeLarge 错误错误这个错误一般在上传文件的时候会出现,编辑 Nginx 主配置文件 Nginx.conf,找到 http段,添加client_max_body_size 10m; /设置多大根据自己的需求作调整.如果运行 php 的话这个大小 client_max_body_size 要和 php.ini 中的如下值的最大值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。post_max_size = 10Mupload_max_filesize = 2M5 5、解决、解决 504504 GatewayGateway

10、Time-out(nginx)Time-out(nginx)遇到这个问题是在升级 discuz 论坛的时候遇到的一般看来, 这种情况可能是由于 nginx 默认的fastcgi 进程响应的缓冲区太小造成的, 这将导致 fastcgi 进程被挂起, 如果你的 fastcgi 服务对这个挂起处理的不好, 那么最后就极有可能导致 504 Gateway Time-out,现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百 K。默认的 fastcgi 进程响应的缓冲区是 8K, 我们可以设置大点在 nginx.conf 里, 加入: fastcgi_buffers 8 128k

11、这表示设置fastcgi 缓冲区为 8128当然如果您在进行某一项即时的操作, 可能需要 nginx 的超时参数调大点,例如设置成 90 秒:send_timeout 90;只是调整了这两个参数, 结果就是没有再显示那个超时, 效果不错Nginx 中关于与上游服务器通信超时时间的配置 factcgi_connect/read/send_timeout。以 Nginx 超时时间为 90 秒,PHP-FPM 超时时间为 300 秒为例,报 504 Gateway Timeout 错误时的 Nginx 错误访问日志如下: 2013/09/19 00:55:51 error 27600#0: *788

12、77 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 01, server: , request: POST /index.php HTTP/1.1, upstream: fastcgi:/unix:/dev/shm/php-fcgi.sock:, host: , referrer: http:/ read 和 send 两项,默认不配置的话 Nginx 会将超时时间设为 60 秒)之后,504 错误也解决了。而且这三项配

13、置可以配置在 http、server 级别,也可以配置在 location 级别。担心影响其他应用的话,就配置在自己应用的 location 中吧。要注意的是 factcgi_connect/read/send_timeout 是对 FastCGI 生效的,而proxy_connect/read/send_timeout 是对 proxy_pass 生效的。配置举例:location .php$ root /home/cdai/; include fastcgi_params; fastcgi_connect_timeout 180; fastcgi_read_timeout 600; fas

14、tcgi_send_timeout 600; fastcgi_pass unix:/dev/shm/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/cdai/$fastcgi_script_name; 6 6、如何使用、如何使用 NginxNginx ProxyProxy朋友一台服务器运行 tomcat 为 8080 端口,IP::8080,另一台机器IP:. 朋友想通过访问 即可访问 tomcat 服务.配置如

15、下:在 的 nginx.conf 上配置如下:server listen 80;server_name location / proxy_pass :8080;include /usr/local/nginx/conf/proxy.conf;7.7. 安装完成安装完成 NginxNginx 后无法站外访问?后无法站外访问?刚安装好 nginx 一个常见的问题是无法站外访问,本机 wget、telnet 都正常。而服务器之外,不管是局域网的其它主机还是互联网的主机都无法访问站点。如果用 telnet 的

16、话,提示: 正在连接到 192.168.0.xxx.不能打开到主机的连接, 在端口 80: 连接失败 如果用 wget 命令的话,提示: Connecting to 00:80. failed: No route to host. 如果是以上的故障现象,很可能是被 CentOS 的防火墙把 80 端口拦住了,尝试执行以下命令,打开 80 端口: iptables -I INPUT -p tcp -dport 80 -j ACCEPT 然后用: /etc/init.d/iptables status 查看当前的防火墙规则,如果发现有这样一条: ACCEPT tcp - 0.

17、0.0.0/0 /0 tcp dpt:80 就说明防火墙规则已经添加成功了,再在站外访问就正常了。8 8、如何关闭、如何关闭 NginxNginx 的的 LOGLOGaccess_log /dev/nullerror_log /dev/null此外,错误日志主要记录客户端访问 nginx 出错时的日志,通过错误日志,能快速定位客户端访问异常!错误信息错误说明upstream prematurely(过早的) closed connection请求 uri 的时候出现的异常,是由于upstream 还未返回应答给用户时用户断掉连接造成的,对系统没有影响,可以忽略recv() fai

18、led (104: Connection reset by peer)(1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接 Down掉; (2)客户关掉了浏览器,而服务器还在给客户端发送数据; (3)浏览器端按了 Stop(111: Connection refused) while connecting to upstream用户在连接时,若遇到后端 upstream 挂掉或者不通,会收到该错误(111: Connection refused) while reading response header from upstream用户在连接成功后读取数据时,若遇到后端 upstre

19、am 挂掉或者不通,会收到该错误(111: Connection refused) while sending request to upstreamNginx 和 upstream 连接成功后发送数据时,若遇到后端 upstream 挂掉或者不通,会收到该错误(110: Connection timed out) while connecting to upstreamnginx 连接后面的 upstream 时超时(110: Connection timed out) while reading upstreamnginx 读取来自 upstream 的响应时超时 (110: Connec

20、tion timed out) while reading response header from upstreamnginx 读取来自 upstream 的响应头时超时(110: Connection timed out) while reading upstreamnginx 读取来自 upstream 的响应时超时(104: Connection reset by peer) while connecting to upstreamupstream 发送了 RST,将连接重置upstream sent invalid header while reading response head

21、er from upstreamupstream 发送的响应头无效upstream sent no valid HTTP/1.0 header while reading response header from upstreamupstream 发送的响应头无效client intended to send too large body用于设置允许接受的客户端请求内容的最大值,默认值是 1M,client 发送的body 超过了设置值reopening logs用户发送 kill -USR1 命令gracefully shutting down,用户发送 kill -WINCH 命令no s

22、ervers are inside upstreamupstream 下未配置 serverno live upstreams while connecting to upstreamupstream 下的 server 全都挂了SSL_do_handshake() failedSSL 握手失败ngx_slab_alloc() failed: no memory in SSL session shared cachessl_session_cache 大小不够等原因造成could not add new SSL session to the session cache while SSL handshakingssl_session_cache 大小不够等原因造成9.9. NginxNginx 出现出现 upstreamupstream prematurelyprematurely closedclosed connectionconnection whilewhile readingreading responseresponse headerheader fromfrom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论