GVKun编程网logo

node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误(nginx nodelay)

15

如果您想了解javascript–我可以配置expressjs通过http和其他人通过https服务某些页面吗?的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析apache配置CA证书通过ht

如果您想了解javascript – 我可以配置expressjs通过http和其他人通过https服务某些页面吗?的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析apache配置CA证书通过https通信、c# – 我可以在Windows服务中托管(自托管)WCF服务并通过http公开它吗?、C#无法通过HttpResponseMessage获取HTTP返回代码、expressjs http帖子无法从javascript帖子获取中获取数据的各个方面,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

javascript – 我可以配置expressjs通过http和其他人通过https服务某些页面吗?

javascript – 我可以配置expressjs通过http和其他人通过https服务某些页面吗?

根据对此问题的回答:

How do I configure nodejs/expressjs to serve pages over https?

我一直试图建立相当于:

var express = require(''express'');
var fs = require("fs");
var crypto = require(''crypto'');

var app = express.createServer();
var appSecure = express.createServer();
var privateKey = fs.readFileSync(''privatekey.pem'').toString();
var certificate = fs.readFileSync(''certificate.pem'').toString();
var credentials = crypto.createCredentials({key: privateKey, cert: certificate});
appSecure.setSecure(credentials);


app.get(''/secretStuff'', function(req,res) {
//redirect to https
}

appSecure.get(''/secretStuff'', function(req, res) {
//show you the secret stuff
}

这是当前发布的expressjs和2.4节点可以实现的吗?

解决方法:

是的,这可以完成,看起来你已经拥有了你需要的大部分内容.只需在app.get处理程序中发送重定向即可

app.get(''/secretStuff'', function(req,res) {
  res.redirect(''https://'' + req.header(''Host'') + req.url);
}

还要确保你执行app.listen(80)和appSecure.listen(443)之类的操作来实际启动相应端口上的服务器.否则,请确保使用正确的端口构造HTTPS URL.对于生产,这个东西通常在你的app服务器(node.js)之外使用像Nginx这样的反向代理处理.在Nginx中执行此操作是微不足道的,这将使您的node.js进程以非root用户身份运行,并且无需客户端直接连接到node.js,这不像Nginx那样用于提供实时内部TCP连接. (我在这里解释Ryan Dahl).

总结

以上是小编为你收集整理的javascript – 我可以配置expressjs通过http和其他人通过https服务某些页面吗?全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190630/1339955.html

apache配置CA证书通过https通信

apache配置CA证书通过https通信

Apache Httpd 2.2 实现https加密通讯

实际生产中CA证书一般是向一些专业认证的国际机构来进行申请的。我们会模拟使用OpenSSL生成的证书,来实现Apache的安全加密通讯,这与实际生产中是类似的。

实验环境准备

主机A:172.16.0.57-------->httpd服务器

主机B:172.16.0.58--------->CA openssl

接下来,我们分两个部分进行,在主机B上搭建CA证书环境,然后在主机A上配置证书环境。

主机B上搭建CA证书环境

CA证书环境中,私钥的名称以及存放路径,还有证书的名称和存放路径都是有一定规则的,所以,如果不明白的话,可以查看/etc/pki/tls/openssl.cnf 文件

1、构建私钥文件

[root@localhost ~]#(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem  2048 )
Generating RSA private key, 2048 bit long modulus .............................................+++ .........................+++ e is 65537 (0x10001)

2、根据私钥文件,创建自签名的根CA证书

证书的名字必须是cacert.pem ,而且存放路径必须是/etc/pki/CA/cacert.pem

[root@localhost ~]#openssl req -new -x509 -key  /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ''.'', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shandong
Locality Name (eg, city) [Default City]:qingdao
Organization Name (eg, company) [Default Company Ltd]:pojun.tech
Organizational Unit Name (eg, section) []:Opt
Common Name (eg, your name or your server''s hostname) []:ca.pojun.tech
Email Address []:

3、此时如果我们去查看证书的内容话,是可以查看我们刚刚指定的这些信息的。

[root@localhost ~]#openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 17076170100312404196 (0xecfabe3b994470e4)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.tech
        Validity
            Not Before: Sep 29 03:40:10 2017 GMT
            Not After : Sep 24 03:40:10 2037 GMT
        Subject: C=CN, ST=shandong, L=qingdao, O=pojun.tech, OU=Opt, CN=ca.pojun.tech    
    *******************省略了公钥和签名信息*************************

3、创建颁发证书必须的两个文件

如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。
我们将文件创建在配置文件中指定的路径下面。

touch /etc/pki/CA/index.txt

 echo 01 > /etc/pki/CA/serial

在主机A上申请证书

1、首先安装mod_ssl动态模块

首先在主机A上安装mod_ssl 模块 ,然后我们来查看一下这个模块里面都包含哪些内容

[root@CentOS6 ~]$rpm -ql mod_ssl
/etc/httpd/conf.d/ssl.conf  # 配置文件
/usr/lib64/httpd/modules/mod_ssl.so  # Apache 动态模块
/var/cache/mod_ssl
/var/cache/mod_ssl/scache.dir
/var/cache/mod_ssl/scache.pag
/var/cache/mod_ssl/scache.sem

2、生成私钥文件

因为私钥文件是给Web服务器来使用的,所以私钥文件可以存放在web服务器的配置目录下。这样方便管理 。

# 首先创建一个目录用来管理生成的私钥和证书请求文件,可根据自己的实际情况而定
[root@centos6 ~]$ mkdir /etc/httpd/conf.d/ssl

# 生成自己的私钥文件
[root@centos6 ~]$(umask 066; openssl genrsa -out /etc/httpd/conf.d/ssl/httpd.key 1024)
Generating RSA private key, 1024 bit long modulus
.++++++
...++++++
e is 65537 (0x10001)

3、生成证书请求文件

生成自己的证书请求文件,这里的请求文件是要传给主机B(根CA)来申请证书的。其中的域名采用了范域名解析。
也就是说,当我们把所有的环境配置结束之后,就应该使用https://*.a.com的方式来访问网站,这样话,服务器就会自动采用加密的方式来处理我们的请求。

# 生成自己的证书申请文件,以 .csr 结尾的文件。
[root@centos6 ssl]$openssl req -new -key /etc/httpd/conf.d/ssl/httpd.key -out /etc/httpd/conf.d/ssl/httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ''.'', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shandong
Locality Name (eg, city) [Default City]:yantai
Organization Name (eg, company) [Default Company Ltd]:pojun.tech
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server''s hostname) []:*.a.com
Email Address []:

Please enter the following ''extra'' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

4、将证书请求文件发送给证书颁发机构(主机B)

我们需要将证书请求文件发送给证书颁发机构。

[root@centos6 ssl]$scp /etc/httpd/conf.d/ssl/httpd.csr  172.18.2.77:/etc/pki/CA/
root@172.18.2.77''s password: 
httpd.csr                                        100%  647     0.6KB/s   00:00

5、在根CA(主机B)颁发证书

我们需要将证书请求文件发送给证书颁发机构。

# 根据主机A提交的证书申请内容,生成证书
[root@localhost ~]#openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
*****************中间省略了输出信息***********************

将生成的证书文件颁发给申请者(主机A)

#  前面我们说过,证书文件都存放在/etc/httpd/conf.d/ssl/目录下
[root@localhost ~]#scp  /etc/pki/CA/certs/httpd.crt  172.18.2.66:/etc/httpd/conf.d/ssl/
The authenticity of host ''172.18.2.66 (172.18.2.66)'' can''t be established.
RSA key fingerprint is 00:c0:e5:a6:39:e9:a7:bb:1b:f4:ab:0d:75:9b:38:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''172.18.2.66'' (RSA) to the list of known hosts.
root@172.18.2.66''s password: 
httpd.crt                                         100% 3714     3.6KB/s   00:00

同时将根CA的证书也发送给Web服务器(主机A)。这一点很重要。

[root@localhost ~]#scp  /etc/pki/CA/cacert.pem   172.18.2.66:/etc/httpd/conf.d/ssl/
root@172.18.2.66''s password: 
cacert.pem                                   100% 1334     1.3KB/s   00:00

在主机A上配置Web服务器

首先配置Web服务器的私钥文件和证书文件,编辑”/etc/httpd/conf.d/ssl.conf”

然后将根CA的证书路径,配置在配置文件中。

 

配置虚拟机主机站点 

 在/etc/httpd/conf.d/目录下创建一个以.conf结尾的文件,并写上:

在ssl.conf文件中进行配置:

我这里是在windows系统上操作的,需要在windows的hosts文件中添加ip映射才可以

 接下来在浏览器中添加根证书

 

最后我们来访问一下:

 好了,这样子就配置成功了。

c# – 我可以在Windows服务中托管(自托管)WCF服务并通过http公开它吗?

c# – 我可以在Windows服务中托管(自托管)WCF服务并通过http公开它吗?

我是WCF的新手..这是可能的,如果它通过外部Web应用程序消耗,最好是使用IIS和http,即ASP.NET MVC应用程序托管的服务吗?

解决方法

是的,您可以在 Windows服务中托管WCF服务.

http://msdn.microsoft.com/en-us/library/ms733069.aspx

我会说,如果你能在iis中托管它,那可能会更好.

C#无法通过HttpResponseMessage获取HTTP返回代码

C#无法通过HttpResponseMessage获取HTTP返回代码

您的BuildApi函数是异步的,因此您需要在代码中等待它:

if (await BuildApi(MyGlobals.data5,MyGlobals.data1,FQAN,MyGlobals.data4) == MyGlobals.ReturnCode)

更新:

如果您无法异步运行它,则需要结果:

if (BuildApi(MyGlobals.data5,MyGlobals.data4).Result == MyGlobals.ReturnCode)

但是,我会首先尝试使您的调用方法异步

expressjs http帖子无法从javascript帖子获取中获取数据

expressjs http帖子无法从javascript帖子获取中获取数据

以表单网址编码发送请求。首先,创建一个处理formUrlEncoding的方法。

formUrlEncoder(params,formUrlBody){
    
    for (let property in params) {
      let key = encodeURIComponent(property);
      let value = encodeURIComponent(params[property]);
      formUrlBody.push(key + "=" + value);
    }
    return formUrlBody.join("&");
}

接下来,调用该方法,该方法将返回所有编码后的值,因此只需将其传递到正文中即可。

const url = 'http://localhost:3700/do-login';
const params = {
  email :'test@domain.com',password : 'test'
};
const headers = new Headers({
  'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
});

let formUrlBody = [];
formUrlBody = formUrlEncoder(params,formUrlBody);

fetch(url,{
  method: 'POST',headers: headers,body: formUrlBody
});

您可以找到有关提取here的更多详细信息。

我们今天的关于javascript – 我可以配置expressjs通过http和其他人通过https服务某些页面吗?的分享就到这里,谢谢您的阅读,如果想了解更多关于apache配置CA证书通过https通信、c# – 我可以在Windows服务中托管(自托管)WCF服务并通过http公开它吗?、C#无法通过HttpResponseMessage获取HTTP返回代码、expressjs http帖子无法从javascript帖子获取中获取数据的相关信息,可以在本站进行搜索。

想了解node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于nginx nodelay的相关问题,此外,我们还将为您介绍关于502 - php的phalcon框架502 Bad Gateway错误,nginx环境、502 bad gateway是什么意思 502 bad gateway错误解决方法、centos – Nginx 502 Bad Gateway错误、EB AWS上的错误-502 Bad Gateway nginx / 1.18.0的新知识。

本文目录一览:

node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误(nginx nodelay)

node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误(nginx nodelay)

我目前正在运行Nginx背后的一系列Node.js表达应用程序.但是,虽然我的应用程序运行正常,但我在某些情况下遇到间歇性的502 Bad Gateway错误.

主实例是用户尝试登录的位置.通常第一次登录尝试将返回502错误(并且此错误将是即时的而不是在延迟之后发生),而此后立即的第二次尝试将处理正常,而请求标头中没有变化.

我已经检查了Nginx和express的日志,看起来在第一个例子中,尽管细节相同,但第一次尝试返回500错误(如在登录尝试错误的情况下计划的那样).然后,这会在Nginx中触发502错误.

Nginx错误日志:

2013/10/21 19:32:57 [error] 8178#0: *32101 upstream prematurely closed connection while reading response header from upstream, client: 82.40.77.228, server: instok.net, request: "POST /login HTTP/1.1", upstream: "https://127.0.0.1:5001/login", host: "instok.net", referrer: "https://instok.net/"

Nginx访问日志:

- [21/Oct/2013:19:32:57 +0000] "POST /login HTTP/1.1" 502 172 "https://instok.net/" "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0" "-"82.40.77.228 - 
- [21/Oct/2013:19:32:59 +0000] "POST /login HTTP/1.1" 200 5 "https://instok.net/" "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0" "-"82.40.77.228 - 

快速访问日志:

- [Mon, 21 Oct 2013 19:32:57 GMT] \"POST /login HTTP/1.0\" 500 69 \"https://instok.net/\" 
- [Mon, 21 Oct 2013 19:32:59 GMT] \"POST /login HTTP/1.0\" 200 - \"https://instok.net/\"

服务器端身份验证

function authenticate(name, pass, fn) {

  User.findOne({_id: name}, function(err, user) {
   if (!user) {  return fn(new Error("Cannot find user"))}; 

   bcrypt.compare(pass, user.hash, function(err, res){
     if (err || !res) { return fn(err) }

     else {
        return fn(null, user);
        }
    })
  })
}

exports.logIn = function(req, res){
 authenticate(req.body.username, req.body.password, function(err, user){
  if (user){
      req.session.regenerate(function(){
        req.session.user = user;
        res.status(200).send();
      })
  }
  else {
    res.status(500).send({message: "Error with username or password - please try again"})
  }

 });
}

我的Nginx.conf文件的相关部分是https://gist.github.com/grabbeh/6721046,我还使用同一个文件运行其他几个node.js应用程序.

在客户端,我使用Angular.js和$http.post将登录详细信息发送到服务器,条件处理取决于是否从服务器发回200或500错误.

我还使用routeChangeError事件从服务器重定向500错误,以重定向到登录页面,在登录页面中尝试在登录之外访问路由.但是,我不认为客户端处理是相关的,因为在任何客户端处理之前返回错误.

很可能有更好的处理身份验证的方法,这当然可以解决上述问题,但是目前我想要了解间歇性502错误的底部.

该错误确实似乎来自Express返回500,当它应该返回200但我无法识别问题,尽管玩弄代码.我们将非常感激地收到任何意见.该应用程序本身在https://instok.net上运行,可以查看所有客户端代码.

出于兴趣,502和有效请求的详细信息如下:

编辑

我缺少的一点是我使用https://github.com/nodejitsu/forever来保持应用程序在崩溃时运行.在检查了Forever日志后,很明显问题是连接到MongoDB数据库失败导致应用程序崩溃.此错误未在应用程序中捕获,因此,据我所知,Express日志中未引用该错误.现在已经解决了这个问题,而且我已经切换到另一个MongoDB实例,我希望能解决问题.

解决方法:

我相信我发现了一个问题,即由于mongoose无法连接到MongoDB实例而导致未被捕获的错误.我现在已经处理了错误并将数据库切换到另一个实例.触摸木材,我目前没有任何进一步的问题.

总结

以上是小编为你收集整理的node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190629/1324865.html

502 - php的phalcon框架502 Bad Gateway错误,nginx环境

502 - php的phalcon框架502 Bad Gateway错误,nginx环境

如果是简单的 echo ''hello world''; 的话可以正常访问,使用phalcon的就不行,不知道怎么回事,求助。
php-fpm.log总是出现下面这样的提示:

[16-May-2015 19:08:58] NOTICE: [pool www] child 28875 started
[16-May-2015 19:09:00] WARNING: [pool www] child 28870 exited on signal 11 (SIGSEGV - core dumped) after 3.975894 seconds from start
[16-May-2015 19:09:00] NOTICE: [pool www] child 28878 started
[16-May-2015 19:09:02] WARNING: [pool www] child 28875 exited on signal 11 (SIGSEGV - core dumped) after 4.456202 seconds from start
[16-May-2015 19:09:02] NOTICE: [pool www] child 28880 started
[16-May-2015 19:10:20] WARNING: [pool www] child 28878 exited on signal 11 (SIGSEGV - core dumped) after 80.234199 seconds from start
[16-May-2015 19:10:20] NOTICE: [pool www] child 28896 started
[16-May-2015 19:10:27] WARNING: [pool www] child 28880 exited on signal 11 (SIGSEGV - core dumped) after 84.586972 seconds from start
[16-May-2015 19:10:27] NOTICE: [pool www] child 28902 started
[16-May-2015 19:33:08] WARNING: [pool www] child 28902 exited on signal 11 (SIGSEGV - core dumped) after 1361.414055 seconds from start
[16-May-2015 19:33:08] NOTICE: [pool www] child 29351 started

nginx错误

015/05/16 19:10:27 [error] 27803#0: *214 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.153.1, server: www.codebaa.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fastcgi.socket:", host: "www.codebaa.com", referrer: "http://www.codebaa.com/ajax/test/test"

立即学习“PHP免费学习笔记(深入)”;

2015/05/16 19:33:08 [error] 27803#0: *218 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.153.1, server: www.codebaa.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fastcgi.socket:", host: "www.codebaa.com", referrer: "http://www.codebaa.com/ajax/test/test"

回复内容:

如果是简单的 echo ''hello world''; 的话可以正常访问,使用phalcon的就不行,不知道怎么回事,求助。
php-fpm.log总是出现下面这样的提示:

[16-May-2015 19:08:58] NOTICE: [pool www] child 28875 started
[16-May-2015 19:09:00] WARNING: [pool www] child 28870 exited on signal 11 (SIGSEGV - core dumped) after 3.975894 seconds from start
[16-May-2015 19:09:00] NOTICE: [pool www] child 28878 started
[16-May-2015 19:09:02] WARNING: [pool www] child 28875 exited on signal 11 (SIGSEGV - core dumped) after 4.456202 seconds from start
[16-May-2015 19:09:02] NOTICE: [pool www] child 28880 started
[16-May-2015 19:10:20] WARNING: [pool www] child 28878 exited on signal 11 (SIGSEGV - core dumped) after 80.234199 seconds from start
[16-May-2015 19:10:20] NOTICE: [pool www] child 28896 started
[16-May-2015 19:10:27] WARNING: [pool www] child 28880 exited on signal 11 (SIGSEGV - core dumped) after 84.586972 seconds from start
[16-May-2015 19:10:27] NOTICE: [pool www] child 28902 started
[16-May-2015 19:33:08] WARNING: [pool www] child 28902 exited on signal 11 (SIGSEGV - core dumped) after 1361.414055 seconds from start
[16-May-2015 19:33:08] NOTICE: [pool www] child 29351 started

nginx错误

015/05/16 19:10:27 [error] 27803#0: *214 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.153.1, server: www.codebaa.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fastcgi.socket:", host: "www.codebaa.com", referrer: "http://www.codebaa.com/ajax/test/test"

立即学习“PHP免费学习笔记(深入)”;

2015/05/16 19:33:08 [error] 27803#0: *218 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.153.1, server: www.codebaa.com, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fastcgi.socket:", host: "www.codebaa.com", referrer: "http://www.codebaa.com/ajax/test/test"

是否安装了opcache,先禁用试试。

502 bad gateway是什么意思 502 bad gateway错误解决方法

502 bad gateway是什么意思 502 bad gateway错误解决方法

您可以尝试清除浏览器缓存 访问一下你的FTP看是否可以登陆

成功解决502 Bad Gateway错误

今天登陆博客,显示502 bad gateway,NGINX最烦人的地方就是经常会出现这个错误,由于我并不打算在技术上花费过多的时间,所以一般是遇到了相关问题,通过搜索引擎解决后即可,不会去深究。废话不多说,说说我的坎坷经历。
首先,我重启了服务器,可是重启了好几次,都无效,然后去Google搜索了下502 bad gateway,出来了很多的网页,筛选后进入http://lnmp.org/faq/lnmp-Nginx-502-Bad-Gateway.html,作者归纳很详细,基本上照着做就是了,问题是,我的完全对不上,因为里面列出的路径或者php-fpm和php-cgi 根本不存在,这个就难倒我了。所以我忽然想到与其盲目的找原因,不如再重启下web服务器。结果出来了

Google后就有朋友给出

httpd: Syntax error on line 54 of /usr/local/apache/conf/httpd.conf: module rewrite_module is built-in and can''t be loaded

表示模块是内建的,不用再调入,注释掉

#LoadModule rewrite_module modules/mod_rewrite.so

以下是补充:
然后,照着注释掉后,重启web 服务器,果然OK,来来回回,前前后后搞了不少时间,主要还是一个思路问题吧。先找出问题在哪,再找出解决问题的方法才行。这里主要用于做记录,留着以后备用。产生原因

  服务器(不一定是Web服务器)是作为网关或代理,以满足客户的要求(如Web浏览器或我们的CheckUpDown机器人)来访问所请求的URL 。此服务器收到无效响应从上游服务器访问履行它的要求。
  固定502错误
  一般这个问题是由于不良的IP之间的沟通后端计算机,包括您可能尝试访问的在Web服务器上的网站。在分析这个问题,您应该清除浏览器缓存完全。
  如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能
  1 )你的ISP了重大设备故障/过载或
  2 )有问题的内部互联网连接如您的防火墙无法正常运作。
  在第一种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那就是阻止你进入互联网。
  如果您只有在部分尝试访问的网站中出现此问题,那就很可能是一个问题,即这些网站之一,其设备故障或超载。联系网站的管理员。

 关于502 bad getway报错的解决办法 通俗解释一下 

 1.什么是502 bad getway 报错 
  简单来说 502 是报错类型代码 bad getway 错误的网关 
 2.产生错误的原因  
  连接超时 我们向服务器器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错 
 3.解救的办法 
  最好的解决办法当然还是在服务器上做 对大家来说不太可能 
  那么我们有什么解救的方法呢? 
  说白了 很简单 
  就是——刷新(不是一般的刷新哦) 
 刷新的原理 :很多人可能不知道 刷新也是有两种的。 
  所谓刷新其实就是从服务器下载数据到本地的硬盘浏览器, 
  再从本地硬盘种读取数据到浏览器显示给我们看。 
 ①基本刷新:就是点击刷新或者使用F5快捷键 
  基本刷新只是从本地的硬盘重新拿取数据到浏览器,并不重新向服务器发出请求。 
  大部分用户很多时候都是这样刷新的,遇到502报错的就没有任何效果。 
 ②从服务器刷新: 如果你重新直接点击你想要浏览的网页链接,你会发现刚才还是显示502 bad getway的页面现在又可以正常浏览了! 
  明白道理了吧?当你点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。 
 解决方法就是从服务器上刷新:快捷键 ctrl+F5,这样就是重新向服务器发送请求了。 
  如果服务器能正常给予你响应你就可以看到页面了。 


深入分析Nginx 502 Bad Gateway和Nginx 504 Gateway Time-out及其解决

  Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。
   Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。
  解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
   而正确的设置需要考虑服务器自身的性能和访客的数量等多重因素。
   以我目前的服务器为例子CPU是奔四1.5G的,内存1GB,CENTOS的系统,访客大概是50人左右同时在线。
   但是在线的人大都需要请求PHP-CGI进行大量的信息处理,因此我将nginx.conf设置为:
   fastcgi_connect_timeout 300s;
   fastcgi_send_timeout 300s;
   fastcgi_read_timeout 300s;
   fastcgi_buffer_size 128k;
   fastcgi_buffers 8 128k;#8 128
   fastcgi_busy_buffers_size 256k;
   fastcgi_temp_file_write_size 256k;
   fastcgi_intercept_errors on;
   这里最主要的设置是前三条,即
   fastcgi_connect_timeout 300s;
   fastcgi_send_timeout 300s;
   fastcgi_read_timeout 300s;
   这里规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。
   下面我们来仔细分析一下php-fpm.conf几个重要的参数:
   php-fpm.conf有两个至关重要的参数,一个是"max_children",另一个是"request_terminate_timeout"
   我的两个设置的值一个是"40 ,一个是"900 ,但是这个值不是通用的,而是需要自己计算的。
 计算的方式如下:
   如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将"request_terminate_timeout"设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给"request_terminate_timeout"赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
  而"max_children"这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。设置"max_children"也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因此我的"max_children"我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。而如果我的"max_children"设置的较小,比如5-10个,那么php-cgi就会"很累",处理速度也很慢,等待的时间也较长。如果长时间没有得到处理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。


Nginx 502 bad gateway错误解决方法


使用Nginx作为Web服务器的时候,你或多或少都会遇到Nginx 502 bad gateway的错误,造成这种错误的原因有很多。下面我们来一一解析。 
 

一、查看php-cgi是否在运行 
有时候由于网站流量过大或者其它原因,导致php-cgi直接down掉,所以我们得看php-cgi是否在运行。执行如下命令:

ps -A | grep php5-cgi 
如果没有运行,手动启动

/etc/init.d/php_cgi start 
如果你发现php-cgi不明原因有时候down掉,可以使用下面的脚本临时解决这个问题,添加到cronjob。

if ps aux | grep ‘php5-cgi'' | grep -v grep  > /dev/null ; then          echo "PHP-cgi is runnning !"      else          echo "PHP-cgi is down. Starting over…"          /etc/init.d/php-fcgi start  fi 二、fastcgi进程数不够用、php执行时间长的原因 
  fastcgi进程数可以修改php-fpm.conf中的max_children的数值,高峰时php-cgi耗掉的最大内存为20M,请根据自己的内存情况计算了。
   限制php执行时间可以在php-fpm.conf中的request_terminate_timeout设置,这是为了防止php程序的bug导致php-cgi假死。

三、FastCGI执行时间过长 
根据实际情况调高以下参数值

fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; 
除了上面列出的三种情况,当然还会有其它原因,但上面三种情况是最常见的

  最近几天发现网通线路的服务器出现流量不稳定的情况,具体的表现是,流量时而高,时而低,在流量低的时候发现系统的负载很小,几乎为0,但是过一会,负载又高上去,流量也上去,很是奇怪,查找了2天没有找到原因,后来看到一边文章,介绍了解决nginx出现502的错误现象,按照这个方法进行尝试,最终还是找到了问题的原因。

  解决步骤如下:

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

  netstat -anpo | grep "php-cgi" | wc -l

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

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

  在做第一步的时候,系统当前的PHP FastCGI进程数明显超过了预设值的64这个数值,在电信的服务器上查看当前的PHP FastCGI进程数没有高于64这个数值,而且网通线路的活动连接明显高于电信的活动连接,准备到晚上的时候看看情况,结果到晚上22:30的时候,查看系统当前的PHP FastCGI进程数明显小于64预设值,当前的活动连接也比原来低很多,由此可以说明出现nginx不稳定的情况是由于服务器访问负载过大引起的,就是加上第二步的错误也不顶作用。

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

您可能感兴趣的文章:
  • Nginx 502 Bad Gateway错误原因及解决方案
  • 深入探讨:Nginx 502 Bad Gateway错误的解决方法
  • Nginx 502 Bad Gateway错误常见的4种原因和解决方法
  • nginx服务器异常502 bad gateway原因排查
  • Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法
  • php报错502badgateway解决方法
  • nginx加php-fpm出现502 bad gateway错误的5种解决方法
  • nginx 502 Bad Gateway 错误解决办法
  • PHP 502bad gateway原因及解决方案
  • Nginx 502 bad gateway错误解决的九种方案及原因

centos – Nginx 502 Bad Gateway错误

centos – Nginx 502 Bad Gateway错误

目前我的Centos 6.8服务器上有502 Bad Gateway Error.
2017/01/30 23:57:31 [crit] 26911#0: *1 connect() to unix:/var/run/PHP/PHP7.0-fpm.sock Failed (2: No such file or directory) while connecting to upstream,client: 192.168.0.15,server: 192.168.0.$

我检查了目录是否存在但是没有.我能找到的最接近文件夹的是/ var / run / PHP-fpm,它只包含PHP-fpm.pid.

以下是解决此问题的步骤:

>检查PHP-fpm是否正在运行:

sudo service PHP-fpm status
sudo service PHP7-PHP-fpm status # use this if you are using remi PHP 7

>在PHP-fpm的www.conf配置文件中检查listen指令:

grep -Ri listen /etc/PHP/7.0/fpm/pool.d/www.conf 
grep -Ri listen /etc/opt/remi/PHP70/PHP-fpm.d # for remi

>确保您的Nginx fastcgi_pass指令与您的listen指令匹配.

EB AWS上的错误-502 Bad Gateway nginx / 1.18.0

EB AWS上的错误-502 Bad Gateway nginx / 1.18.0

enter image description here如果您在 eb 上使用 python > 3.6。然后 eb 将使用 gunicorn 运行您的 django 应用程序。 因此,您需要使用 pip install gunicorn 安装 gunicorn 并在 requirements.txt 中使用 pip freeze requirements.txt 提及它,最重要的是您需要在 manage.py 所在的项目根目录中创建“Procfile”。 “Procfile”将没有扩展名。 “Procfile”内容如下: 网络:gunicorn --bind :8000 --workers 3 --threads 2 ebdjango.wsgi:application 代替 ebdjango,输入您的项目名称并使用 eb deploy 进行部署。 谢谢!

,

我和您在同一时间遇到了完全相同的问题。我的解决方案是将程序的开头从index.js删除到app.js。之后,一切都会恢复正常。由于某些原因,aws不再启动index.js文件。

我们今天的关于node.js – 在Nginx后面运行Express应用程序的间歇性502 Bad Gateway错误nginx nodelay的分享就到这里,谢谢您的阅读,如果想了解更多关于502 - php的phalcon框架502 Bad Gateway错误,nginx环境、502 bad gateway是什么意思 502 bad gateway错误解决方法、centos – Nginx 502 Bad Gateway错误、EB AWS上的错误-502 Bad Gateway nginx / 1.18.0的相关信息,可以在本站进行搜索。

本文标签: