精华内容
下载资源
问答
  • 主要介绍了Nginx 502 Bad Gateway错误常见的4种原因和解决方法,本文适用FastCGI环境,其中多数原因通过配置相关参数即可解决,需要的朋友可以参考下
  • 成功解决502 Bad Gateway错误 今天登陆博客,显示502 bad gateway,NGINX最烦人的地方就是经常会出现这个错误,由于我并不打算在技术上花费过多的时间,所以一般是遇到了相关问题,通过搜索引擎解决后即可,不会去...
  • 主要介绍了nginx加php-fpm环境中出现502 bad gateway错误的5种解决方法,总结归纳服务器出现502错误的原因多数为连接过多和脚本超时,本文总结了5种解决方法,需要的朋友可以参考下
  • Nginx 502 bad gateway问题的解决方法,希望能帮忙大家
  • Nginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。 会有好多种情况出现502错误,下面我们分情况来说一下。 一、fastcgi缓冲区设置过小 出现错误,首先要查找nginx的日志文件,目录为/...
  • 一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考
  • 502 Bad Gateway

    2020-12-26 02:24:02
    502 Bad Gateway</title> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.11.3</center> </code></pre> <p>Opening this issue, in case you...
  • 本篇文章是对Nginx 502 Bad Gateway错误的解决方法进行了详细的分析介绍,需要的朋友参考下
  • 我让按照以下两个步骤去解决,最后在第2步中将FastCGI的timeout时间增加为300,问题解决: PS:比较羡慕迅雷的Web服务器,16G内存。 1、查看当前的PHP FastCGI进程数是否够用: netstat -anpo | grep “php-cgi” | ...
  • 一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是从Google搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502错误的原因比较多,是因为在代理模式下后端...

    一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是从Google搜集整理的一些Nginx 502错误的排查方法,供参考:

    Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句 502 Bad Gateway,另外还不忘附上自己的大名。

    Nginx 502的触发条件

    502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:

    proxy_next_upstream error timeout invalid_header http_500 http_503;

    不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……

    503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。

    解决办法

    遇到502问题,可以优先考虑按照以下两个步骤去解决。

    1、查看当前的PHP FastCGI进程数是否够用:

    netstat -anpo | grep “php-cgi” | wc -l

    如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。

    2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:

    ……
    http
    {
    ……
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    ……
    }
    ……

    php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。

    如果这样修改了还解决不了问题,可以参考下面这些方案:

    一、max-children和max-requests

    一台服务器上运行着nginx php(fpm) xcache,访问量日均 300W pv左右

    最近经常会出现这样的情况: php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。这种情况只持续数秒钟就恢复了

    检查php-fpm的日志文件发现了一些线索

    Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200
    Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″
    Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll
    Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587

    在这几句的前面,是1000多行的关闭children和开启children的日志

    原来,php-fpm有一个参数 max_requests,该参数指明了,每个children最多处理多少个请求后便会被关闭,默认的设置是500。因为php是把请求轮询给每个 children,在大流量下,每个childre到达max_requests所用的时间都差不多,这样就造成所有的children基本上在同一时间 被关闭。

    在这期间,nginx无法将php文件转交给php-fpm处理,所以cpu会降至很低(不用处理php,更不用执行sql),而负载会升至很高(关闭和开启children、nginx等待php-fpm),网卡流量也降至很低(nginx无法生成数据传输给客户端)

    解决问题很简单,增加children的数量,并且将 max_requests 设置未 0 或者一个比较大的值:

    打开 /usr/local/php/etc/php-fpm.conf

    调大以下两个参数(根据服务器实际情况,过大也不行)

    <value name=”max_children”>5120</value>
    <value name=”max_requests”>600</value>

    然后重启php-fpm。

    二、增加缓冲区容量大小

    将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修 改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。

    三、request_terminate_timeout

    如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置中的一项:

    request_terminate_timeout

    这个值是max_execution_time,就是fast-cgi的执行脚本时间。

    0s

    0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)

    发现,问题解决了,执行很长时间也不会出错了。

    优化fastcgi中,还可以改改这个值5s 看看效果。

    php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。

    如果您还有其他的解决方法,欢迎留言!

    展开全文
  • wordpress修复插件Do you want to fix the 502 bad gateway error on your site? This error is quite annoying because it can be caused by a lot of different things. This means troubleshooting the 502 bad ...

    wordpress修复插件

    Do you want to fix the 502 bad gateway error on your site? This error is quite annoying because it can be caused by a lot of different things. This means troubleshooting the 502 bad gateway error can take some time. In this article, we will show you how to easily fix the 502 bad gateway error in WordPress.

    您要修复网站上的502错误网关错误吗? 此错误非常令人讨厌,因为它可能是由许多不同的原因引起的。 这意味着对502错误的网关错误进行故障排除可能需要一些时间。 在本文中,我们将向您展示如何轻松修复WordPress中的502错误网关错误。

    How to fix the 502 bad gateway error in WordPress

    什么是502错误网关错误? (What is a 502 Bad Gateway Error?)

    A 502 bad gateway error is triggered when your WordPress hosting server gets an invalid response for the requested page.

    当您的WordPress托管服务器收到对所请求页面的无效响应时,会触发502错误网关错误。

    Bad gateway error is one of the common WordPress errors that you may encounter on your site. It can be caused by a number of reasons and depending on your server the error message may also differ in looks slightly.

    错误的网关错误是您在网站上可能会遇到的常见WordPress错误之一。 原因可能有多种,根据服务器的不同,错误消息的外观可能也会略有不同。

    502 bad gateway in browser

    When you visit a website your browser sends a request to the hosting server. The hosting server then finds the page and sends it back to your browser with the status code.

    当您访问网站时,浏览器会将请求发送到托管服务器。 然后,托管服务器会找到该页面,并将其与状态代码一起发送回您的浏览器。

    Normally, you wouldn’t see this status code. However, in case of an error the status code is displayed with an error message. Examples of such errors include 404 not found, 503 service unavailable, 403 forbidden error, and more.

    通常,您不会看到此状态代码。 但是,如果发生错误,则会显示状态代码并显示一条错误消息。 此类错误的示例包括404找不到503服务不可用403禁止错误等。

    The most common reason for a 502 bad gateway error is when your request takes too long for the server to respond. This delay can be a temporary glitch caused by high traffic. It could also be a glitch caused by a poorly coded WordPress theme or plugin. Last but not least, it can also happen due to a server misconfiguration.

    502错误网关错误的最常见原因是您的请求花费的时间太长,服务器无法响应。 此延迟可能是由高流量引起的暂时故障。 也可能是由于WordPress主题或插件编码错误导致的故障。 最后但并非最不重要的一点是,由于服务器配置错误,它也可能发生。

    That being said, let’s take a look at how to easily fix the 502 bad gateway error in WordPress.

    话虽如此,让我们看一下如何轻松修复WordPress中的502错误网关错误。

    修复502 Bad Gateway错误 (Fixing the 502 Bad Gateway Error)

    This error is usually caused when your server is unable to find the cause of the invalid response. This means that we will try different troubleshooting steps until we find the problem.

    当您的服务器找不到无效响应的原因时,通常会导致此错误。 这意味着我们将尝试不同的故障排除步骤,直到找到问题。

    Ready, let’s get started.

    准备好了,让我们开始吧。

    步骤1:重新载入您的网站 (Step 1: Reload Your Website)

    Sometimes your server may take longer to respond due to increased traffic or low server resources. In that case, the problem may automatically disappear in a few minutes. You should try reloading the web page that you are viewing to see if this was the cause.

    有时,由于流量增加或服务器资源不足,服务器可能需要更长的响应时间。 在这种情况下,问题可能会在几分钟后自动消失。 您应该尝试重新加载正在查看的网页,以查看是否是原因。

    If this fixed your problem, then you do not need to read any further. However, if you see this error frequently, then you need to continue reading as there may be something else that needs fixing.

    如果这解决了您的问题,则您无需进一步阅读。 但是,如果您经常看到此错误,则需要继续阅读,因为可能还有其他需要修复的问题。

    步骤2:清除浏览器缓存 (Step 2: Clear Browser Cache)

    Your browser may be showing you the error page from the cache. Even after the issue is fixed, you would see the 502 error because the browser is loading your website from cache.

    您的浏览器可能正在从缓存中向您显示错误页面。 即使问题已解决,您仍会看到502错误,因为浏览器正在从缓存加载网站。

    To fix this, users with Windows/Linux operating systems can press Ctrl + F5 buttons and Mac OS users can press CMD + Shift + R buttons on their keyboards to refresh the page. You can also remove the cache manually from your browser settings.

    要解决此问题,使用Windows / Linux操作系统的用户可以按Ctrl + F5按钮,而Mac OS用户可以按键盘上的CMD + Shift + R按钮刷新页面。 您也可以从浏览器设置中手动删除缓存。

    Clear browser cache

    Once you clear your WordPress cache, try loading the website again.

    清除WordPress缓存后 ,请尝试再次加载网站。

    You can use a different browser to troubleshoot if the problem is occurring because of browser cache. If you see the error on all browsers, then continue reading.

    如果由于浏览器缓存而出现问题,则可以使用其他浏览器进行故障排除。 如果在所有浏览器上都看到错误,请继续阅读。

    步骤3:停用CDN或防火墙 (Step 3: Disable the CDN or Firewall)

    If you are using a CDN service or website firewall on your website, then it is possible that their servers are acting up. To check this, you will need to temporarily disable CDN.

    如果您在网站上使用CDN服务网站防火墙 ,则它们的服务器可能正在运行。 为此,您需要暂时禁用CDN。

    Once disabled, it will remove the additional layer that has been created between your browser and the hosting server. Your website will now load entirely from your server and if the issue was caused by the CDN / firewall service, then it will get resolved now.

    禁用后,它将删除在浏览器和托管服务器之间创建的附加层。 现在,您的网站将完全从服务器加载,如果问题是由CDN /防火墙服务引起的,则现在可以解决。

    You can then contact your CDN service provider for support. Once the issue is resolved, you can go ahead and enable the CDN again.

    然后,您可以联系CDN服务提供商以获取支持。 问题解决后,您可以继续并再次启用CDN。

    步骤4:更新WordPress主题和插件 (Step 4: Update WordPress Themes and Plugins)

    If the error is still there, then the next step is to check your theme or plugins.

    如果错误仍然存​​在,则下一步是检查主题或插件。

    First, you will need to deactivate all WordPress plugins via FTP. After that, visit your website to see if the error has resolved.

    首先,您将需要通过FTP 停用所有WordPress插件 。 之后,请访问您的网站以查看错误是否已解决。

    If it is, then one of your plugins was causing the issue. You now need to activate all plugins one by one until you can reproduce the error. This will help you locate the plugin responsible for the error.

    如果是这样,则说明您的一个插件引起了该问题。 现在,您需要一个接一个地激活所有插件,直到可以重现该错误为止。 这将帮助您找到导致错误的插件。

    You can find an alternative plugin or contact the plugin author for support.

    您可以找到替代插件,或与插件作者联系以获取支持。

    If deactivating plugins didn’t solve your issue, then you would want to check your WordPress theme. You will need to switch WordPress theme via phpMyAdmin.

    如果停用插件不能解决您的问题,则您需要检查WordPress主题。 您将需要通过phpMyAdmin切换WordPress主题

    After switching your theme to the default WordPress theme, visit your website to see if it’s working. If you are still seeing the error, then continue reading.

    将主题切换为默认的WordPress主题后,请访问您的网站以查看其是否有效。 如果仍然看到错误,请继续阅读。

    步骤5:检查托管服务器 (Step 5: Check the Hosting Server)

    If all above-mentioned troubleshooting steps failed, then it is likely an issue with your hosting server.

    如果上述所有故障排除步骤均失败,则主机服务器可能有问题。

    You need to contact your hosting provider’s support team and let them know the issue. You can also mention all the troubleshooting steps you have taken.

    您需要联系托管服务提供商的支持团队,并让他们知道问题。 您还可以提及已采取的所有故障排除步骤。

    All good WordPress hosting companies will be able to quickly fix the issue if it is caused by a server misconfiguration.

    如果这是由服务器配置错误引起的,那么所有好的WordPress托管公司都将能够Swift解决该问题。

    That’s all. We hope this article helped you learn how to fix the 502 bad gateway error in WordPress. You may also want to see our complete WordPress troubleshooting guide for step by step instructions on fixing your WordPress issues.

    就这样。 我们希望本文能帮助您学习如何修复WordPress中的502错误网关错误。 您可能还想查看我们完整的WordPress故障排除指南 ,以获取有关解决WordPress问题的分步说明。

    If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

    如果您喜欢这篇文章,请订阅我们的YouTube频道 WordPress视频教程。 您也可以在TwitterFacebook上找到我们。

    翻译自: https://www.wpbeginner.com/wp-tutorials/how-to-fix-the-502-bad-gateway-error-in-wordpress/

    wordpress修复插件

    展开全文
  • 在本篇文章里小编给大家整理了关于php报错502badgateway解决方法相关知识点,有需要的朋友们参考下。
  • 502 Bad Gateway 常见解决思路

    万次阅读 2019-04-10 11:01:44
    一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回502 Bad Gateway Nginx, 这种问题相信大家也遇到不少了, 这里我再总结下几种处理方式,有缺少或者错误的希望有大神能指出。 一般的思维:502,...

    一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回502 Bad Gateway Nginx,

    这种问题相信大家也遇到不少了,

    这里我再总结下几种处理方式,有缺少或者错误的希望有大神能指出。

     

    一般的思维:502,说明服务器没有响应,也就是我们的web服务器没有接到有效的信息导致的。

    产生错误的原因主要是:连接超时,我们向服务器发送请求由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。

     

    问题:nginx 不断返回 502 等错误。

    一般遇到这个问题第一反应就是有可能Nginx挂了(几乎不可能),

    所以查看nginx进程,发现运行正常,

    然后在查看nginx日志,也没有任何问题。

     

    有时候我们会从nginx日志中发现大量的相同的ip请求

    这种一般都是引起服务挂掉,或者响应不及时的非法请求。

    一般都是别人攻击你了。

    这种也很好解决,加ip黑名单,黑名单中的ip拒绝提供服务。

    我们项目是在拦截器里面配置白名单和黑名单的,这种做法可能也是比较常用的办法。

    也可以在nginx里面配置黑名单,拒绝访问。

    配置ip黑名单的方法是多种多样的,适合自己的就行。

     

    过多的请求可能导致服务宕机,直接重启也是可以解决的,但是没有找到问题的根本原因。

    一般查看服务状态有这么几个linux常用命令。

    top命令:可以查看cpu的使用率,如果使用率过高,也可以跟进具体是哪个线程。

    https://blog.csdn.net/qq_20545159/article/details/77775122

     

    iotop命令:可以查看磁盘io的使用情况。

    如果io特别大,一般都是内存爆了,才会直接和硬盘打交道,才会导致io飙升。

    用free查看内存:如果100%,停掉了没用的测试服务,停掉测试服务后,重启平台,一切正常。

    展开全文
  • 放到crontab里一分钟执行一次。url和cmd根据自己的改。
  • 前端报502 bad gateway的原因及解决方案

    万次阅读 多人点赞 2019-04-30 10:28:50
    502 Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 解决办法是:再刷新一下网页或清理一下电脑的缓冲文件在打开你想打开的网页就好了. 一般情况下,这种办法是...

    502 Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 解决办法是:再刷新一下网页或清理一下电脑的缓冲文件在打开你想打开的网页就好了. 一般情况下,这种办法是行得通的,但也不排除你所访问的网页被屏蔽的可能,如果你所访问的网页被屏蔽的话,就不管你怎么刷新也是没用的了。

    1.什么是502 bad gateway 报错

    简单来说502是报错类型代码bad gateway错误的网关

    2.产生502错误的原因

    连接超时 我们向服务器器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错,具体如下:

    第一个原因:

    DNS 缓冲。 这种情况的通常原因是因为你在未开启vpn的情况下访问了facebook这样的网站。
    这个时候自然访问不上,同时却在本机留下了缓冲。 
    这种情况通常在几分钟之内就可以访问了。也可以尝试 在dos窗口运行 ipconfig /flushdns,该命令会刷新DNS缓冲。

    第二个原因:

    你的浏览器开了代理什么的。确认一下关掉代理。

    第三个原因:

    dns 被劫持了,即使使用国外的dns,也会被劫持。有些机子开vpn能够访问,有些 机子确不能。并且排除了代理、防火墙、本地网络的原因。这个时候同时ping远程网站,比如facebook。不能访问的机子通常获取了一个怪异的ip, 从任何地方都ping不通的ip。而能访问的机子ip,在不能访问的机子上直接可以访问,也可以ping通。这种情况我们可以去掉VPN服务器的DNS。

    切换另外的dns。在windows系统中,可以在本地网络连接的属性中, 去掉默认的dns,选用国外的dns,比如google的。或opendns。

    3.502错误的HTTP周期

    任何客户端(如Web浏览器或我们的CheckUpDown机器人)经过下列循环时,与您的Web服务器沟通:

    获取您的网站IP地址的IP名称(您的网站URL的领导’ http:// ‘ ) 。这查找(转换的知识产权名称, IP地址)所提供的域名服务器( DNSs ) 。

    打开一个IP套接字连接到该IP地址。写一个HTTP数据流通过该套接字。

    从您的响应的Web服务器收到一个HTTP数据流。此数据流包含状态码的值是由HTTP协议。解析此数据流的状态码和其他有用信息。

    这个错误发生在最后一步时,上面的客户端收到一个HTTP状态码,它确认为502 ‘ 。

    4.固定502错误

    一般这个问题是由于不良的IP之间的沟通后端计算机,包括您可能尝试访问的在Web服务器上的网站。在分析这个问题,您应该完全清除浏览器缓存。

    如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能

    1 )你的ISP出了重大设备故障/过载

    2 )有问题的内部互联网连接如您的防火墙无法正常运作。

    在第一种情况下,只有您的ISP可以帮助您。在第二种情况下,就需您自己解决任何阻止您进入互联网的问题。

    如果您只有在部分尝试访问的网站中出现此问题,那就很可能是一个问题,即这些网站之一,其设备故障或超载。联系网站的管理员。

    5.出现502 bad gateway如何解决问题

    最简单的方法:CTRL+F5强制刷新
    最好的解决办法当然还是在服务器上做 对大家来说不太可能 ,那么我们有什么解救的方法呢?说白了很简单,就是——刷新(不是一般的刷新哦)

    刷新的原理 :很多人可能不知道 刷新也是有两种的。所谓刷新其实就是从服务器下载数据到本地的硬盘浏览器, 再从本地硬盘种读取数据到浏览器显示给我们看。   

    ①基本刷新:就是点击刷新或者使用F5快捷键,基本刷新只是从本地的硬盘重新拿取数据到浏览器,并不重新向服务器发出请求。大部分用户很多时候都是这样刷新的,遇到502报错的就没有任何效果。   

    ②从服务器刷新: 如果你重新直接点击你想要浏览的网页链接,你会发现刚才还是显示502 bad getway的页面现在又可以正常浏览了!明白道理了吧?当你点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。 解决方法就是从服务器上刷新:快捷键 ctrl+F5,这样就是重新向服务器发送请求了。如果服务器能正常给予你响应你就可以看到页面了。

    另附:

    Nginx 502 Bad Gateway 错误的原因及解决方法

    Nginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。

     

    会有好多种情况出现502错误,下面我们分情况来说一下。

    一、fastcgi缓冲区设置过小    

    出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误。

    2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream

    查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。

    网上查找了一下解决方法,在国外网站看到了一个增加缓冲区的方法,彻底解决了Nginx 502 Bad Gateway的问题。方法如下:

    http {
        ...
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        ...
    }

    请根据服务器已经网站的情况自行增大上述两个配置项。

    二、代理缓冲区设置过小
        
    如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。

    server {
            listen       80;
            server_name  *.lxy.me;
     
            location / {
     
    ###############添加这3行
                proxy_buffer_size 64k;
                proxy_buffers   32 32k;
                proxy_busy_buffers_size 128k;
    ###############添加这3行
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP       $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    ............
    }

    三、默认php-cgi的进程数设置过少

    在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。也有可能是max_requests值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

    四、php执行超时

    php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300

    五、nginx等待时间超时

    部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间

    http  {
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      ......
      }

    nginx 502 bad gateway

      一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考:

      Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这 些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句 502 Bad Gateway,另外还不忘附上自己的大名。

    Nginx 502的触发条件

      502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:

    proxy_next_upstream error timeout invalid_header http_500 http_503;

    不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……

    503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。

    解决办法

    遇到502问题,可以优先考虑按照以下两个步骤去解决。

    1、查看当前的PHP FastCGI进程数是否够用:

    netstat -anpo | grep "php-cgi" | wc -l
    如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
    
    2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
    http  {
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      ......
      }
      ......

    php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。

      如果这样修改了还解决不了问题,可以参考下面这些方案:

    一、max-children和max-requests

      一台服务器上运行着nginx php(fpm) xcache,访问量日均 300W pv左右。

      最近经常会出现这样的情况:php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。这种情况只持续数秒钟就恢复了。

      检查php-fpm的日志文件发现了一些线索。

    Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200  Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″  Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll  Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587

    在这几句的前面,是1000多行的关闭children和开启children的日志。

      原来,php-fpm有一个参数 max_requests,该参数指明了,每个children最多处理多少个请求后便会被关闭,默认的设置是500。因为php是把请求轮询给每个 children,在大流量下,每个childre到达max_requests所用的时间都差不多,这样就造成所有的children基本上在同一时间 被关闭。

      在这期间,nginx无法将php文件转交给php-fpm处理,所以cpu会降至很低(不用处理php,更不用执行sql),而负载会升至很高(关 闭和开启children、nginx等待php-fpm),网卡流量也降至很低(nginx无法生成数据传输给客户端)

      解决问题很简单,增加children的数量,并且将 max_requests 设置为 0 或者一个比较大的值:

      打开 /usr/local/php/etc/php-fpm.conf调大以下两个参数(根据服务器实际情况,过大也不行)

    <value name="max_children">5120</value>  <value name="max_requests">600</value>

    然后重启php-fpm。

    二、增加缓冲区容量大小

      将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修 改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。

    三、request_terminate_timeout

      如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置中的一项:

    request_terminate_timeout

    这个值是max_execution_time,就是fast-cgi的执行脚本时间。

    0s

    0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)问题解决了,执行很长时间也不会出错了。优化fastcgi中,还可以改改这个值5s 看看效果。

    php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。

    展开全文
  • django nginx 502 Bad Gateway

    2020-08-12 01:22:52
    按照这位大佬部署nginx 和uwsgi其实是没有问题。 但我经常报错 错误日志: upstream prematurely closed connection while reading response header from upstream 检查nginx.conf的配置信息 worker_processes 1;...
  • 502 Bad Gateway nginx/xxx

    2020-01-02 14:23:33
    我们访问网站时,偶尔可能会遇到这样的错误:502 Bad Gateway nginx/xxx 刷新一次或多次就好了。这是什么原因呢? 最近使用nginx的代理、负载均衡功能发现了这问题的根本原因。 什么原因?就是后端的服务挂了! ...
  • Waiting 99557920a7c5: Waiting 7e3c900343d0: Waiting b8f8aeff56a8: Waiting 687890749166: Waiting 2f77733e9824: Waiting 97041f29baff: Waiting received unexpected HTTP status: 502 Bad Gateway 解决办法:...
  • 沙箱测试报错“502 Bad Gateway” 错误描述: 沙箱环境测试报错“502 Bad Gateway”。 问题原因 一般是由于沙箱环境维护导致。 解决方案 为保证沙箱长期稳定,每周日中午12点至每周一中午12点沙箱环境进行维护,...
  • 排查过程 php 测试报错 502 Bad Gateway 直接访问 localhost 是没有问题的,因为直接解析的是静态文件 index.html : 删除默认工作目录下 index.html,新建 php 测试文件,sudo vi /usr/share/nginx/...
  • nginx服务器报错502 bad gateway!

    万次阅读 2019-03-27 18:24:56
    服务器进行公众号粉丝数据同步以及批量推送报错502 根据错误信息可以判定是后端的问题,502错误的原因有很多种,但总的来说就是服务器处理不过来了 1.首先查看服务器日志 1)先查nginx日志,不熟悉的可以从nginx....
  • Docker + Nginx 出现 502 Bad Gateway
  • postman 报错:502Bad Gateway

    千次阅读 2021-05-10 15:24:43
    bug postman报错:502Bad Gateway debug bug产生的一个原因是远端虚拟环境有两个地方存在相同的文件,这是我的原因,其它也会造成这个问题 rm -rf xx删掉多余的整个目录就好了 希望能对你有所帮助,我是热爱互联网的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,791
精华内容 6,316
关键字:

502badgateway