记一次nginx部署yii2项目时502 bad gatewary错误的排查

周六闲来无事,就试着安装和部署下yii2,安装过程没什么问题,但部署到nginx上时遇到了502 bad gatewary问题,折腾了半天才搞定。这个问题是我以前在部署yii2时没有遇到过的,因此记在这里以备忘。

1,安装和部署环境

操作系统:macOS,php版本:5.6,nginx版本:1.10.1,yii2版本:2.0。

2,yii2的安装

yii2的安装很简单,参考官网的手册即可。我这里安装的是yii2-app-advanced(Yii 2 Advanced Project Template),项目地址在github上,按照README中的安装说明一步一步来就行,这个就不多说了。

3,yii2在nginx上的部署

其实yii2-app-advanced项目README中对于如何部署在nginx上已经说的很清楚了,按照步骤来应该不会有什么问题。但是我部署时偷了个懒,直接把README中nginx的部署参数拿来用了,结果才导致了502 bad gateway的错误。

HTTP状态码中5打头的响应代码都是由于服务器端引起的,所以看下nginx的日志:

error log:

看到upstream: "fastcgi: //127.0.0.1:9090"这里,端口好像不对,于是查看下虚拟主机的配置:

再看下php-fpm的配置:

果然,是nginx虚拟主机指定的FastCGI服务器监听端口错了,这样就会导致nginx没有得到FastCGI服务器的响应。所以浏览器发出请求时,nginx给浏览器返回一个502的状态码,告诉浏览器上游的FastCGI服务器没有响应。

4,解决

在nginx的虚拟主机中,把fastcgi_pass指定的端口修改正确,这个错误就解决了。

5,总结

(1)HTTP状态码5打头的错误是由服务器端引起的,502 bad gateway则是由于作为网关或者代理工作的服务器(web服务器)尝试执行请求时,从上游服务器(fastcgi服务器)接收到无效的响应。

(2)fastcgi_pass是ngx_http_fastcgi_module模块的一个配置指令,它指定了fastcgi服务器的地址,nginx文档中对于它的描述如下:

 1 Syntax:    fastcgi_pass address;
 2 Default:    —
 3 Context:    location, if in location
 4
 5 Sets the address of a FastCGI server. The address can be specified as a domain name or IP address, and a port:
 6 fastcgi_pass localhost:9000;
 7
 8 or as a UNIX-domain socket path:
 9 fastcgi_pass unix:/tmp/fastcgi.socket;
10
11 If a domain name resolves to several addresses, all of them will be used in a round-robin fashion. In addition, an address can be specified as a server group.

参考:

HTTP状态码

fastcgi_pass

Syntax: fastcgi_pass address;
Default:
Context: locationif in location
时间: 2024-10-05 21:32:09

记一次nginx部署yii2项目时502 bad gatewary错误的排查的相关文章

apache部署django项目时出现错误

apache部署Django项目时出现错误 Permission denied: mod_wsgi (pid=2081): Unable to connect to WSGI daemon process 'autotester' on '/etc/httpd/logs/wsgi.2076.0.1.sock' after multiple attempts 可在apache配置文件或者wsgi.conf中添加 WSGISocketPrefix /var/run/

nginx部署h5项目

1. nginx部署h5项目 此为windows部署,liunx也类似的 1.1. 前言 部署h5项目还是很简单的,不过对小白来讲一开始可能也是一脸懵逼,这个简单教程针对的是从未部署过前后端分离前端项目的小白 1.2. 步骤 1.2.1. 下载nginx 如下图目录 1.2.2. 放入经过编译的h5项目 把经过编译的h5项目放入html文件夹下,可以在html里面创建一个单独文件夹,把内容放进去 如下图 1.2.3. 修改conf 进入conf目录,打开nginx.conf文件 1.2.4. 启

Nginx部署Django项目报错 KeyError: 'REQUEST_METHOD'

这个问题是应为Nginx的配置文件有问题: 要使用uwsgi启动Django的话要有以下配置: upstream djangos14{ # nginx负载均衡配置: server 10.0.0.10:9999; #server 10.0.0.11:80; } server { listen 80; server_name www.s14hanju.com; location / { # 要使用uwsgi,代理就不要用proxy_pass了,要使用uwsgi_pass: uwsgi_pass dj

已解决: idea创建并部署SpringMVC项目时 报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

用IDEA创建并运行SpringMVC项目时,最初发现没有Servlet包,这个问题已在上篇解决,然而当我们尝试去运行此时的SpringMVC项目时,发现仍然有错误.ClassNotFoundException 笔者也是IDEA的新手,在网上查了很多资料 有帖子说是Tomcat Server 的  VM options 没有填写,按照帖子填上这一项后,重启项目依然报错,最后终于找到了问题的原因,spring springmvc 的jar包没有导入.. 下面来解决这个问题: 现在问题解决了 原文地

uwsgi+nginx部署django项目

1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2  wsgi协议,uwsgi协议和uWSGI a. WSGI(wsgi): 全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种

记基于docker+gunicorn部署sanic项目遇到的很多很多坑

前言: 最近有个项目需要上线,是python中sanic网络异步框架写的,并且要求使用docker+nginx来部署项目实现负载均衡,于是乎百度了sanic项目部署,基本上都是基于docker+gunicorn部署sanic项目这篇文章,里面讲的也稍稍微有些简略,不过对于小白特别不友好,按步骤操作肯定是不行的,因为文章中只举了很小很小的一个例子,感觉更像demo.而小白可能只是临时接受部署任务,按部就班的操作是会出现很多错误的.现在就来排排坑.(建议先看一遍再动手部署) 一.Dockerfile

Eclipse部署Web项目时常见的错误和解决方案

Tomcat部署Web项目到tomcat 在eclipse中找到Servers项,打开服务器(F3)(建议直接删除服务器,重新建立再设置比较好)1.Servers Locations 中选择Use Tomcat installation 2.Deploy path 改成 webapps这时候在eclipse上直接运行项目,就会自动部署到tomcat上,通过浏览器或者eclipse都可以访问该项目. Tomcat控制台的用户角色配置 在Tomcat的Mapper App中,默认没有提供控制台角色.

CentOS7 安装nginx部署vue项目

简单描述:代码开发完了,需要环境来运行测试.服务器上没有nginx,搞起搞起. 在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装.也可以通过直接下载安装包的方法,**以下命令均需root权限执行**:   首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库).选定**/usr/local**为安装目录,以下具体版本号根据实际改变. 安装:1.安装gcc gcc-c++(如新环境

Walle的详细部署、项目应用以及502bad gateway错误解决

                                                 Walle的详细部署与应用 Walle简介: Walle是 一个web部署系统工具,具有 一键快速回滚的功能,它能清晰的记录 上线单申请.审核.部署和实时操作日志,能支持各种web代码发布和回滚. 环境:(一台配置了LAMP/LNMP的linux机器,并且安装git/svn)上操作. 1.代码检出 1)如果你是没有在github上申请过账号,且没有配置ssh-kyes,.这个还是建议去申请账号 [[