Nginx 正在将自定义 http 代码转换为 502 错误网关

Posted

技术标签:

【中文标题】Nginx 正在将自定义 http 代码转换为 502 错误网关【英文标题】:Ngnix is converting custom http code to 502 bad gateway 【发布时间】:2018-03-25 13:25:43 【问题描述】:

应用程序堆栈:

框架:Rails,5.1 反向代理nginx,1.10.3 应用服务器:Passenger,5.1.5

我的 API 只有 Rails 5 应用程序,它在 Ngnix 反向代理后面运行。我的一些请求有 自定义 http 代码,即。 2000、2003 等

但问题是 Ngnix 正在将自定义响应从服务器转换为 502 并因此发送错误网关。我还没有发现任何有用的东西。任何指针将不胜感激。谢谢。

Nginx 服务器块:

server  
  listen 80; 
  server_name sport-staging.sports.com; 
  passenger_enabled on; 
  passenger_app_env staging; 
  root /var/www/sport/current/public; 

【问题讨论】:

【参考方案1】:

首先——您确定将代码更改为默认值后,您的应用程序可以完美运行而没有任何问题吗?只需仔细检查自定义代码中是否存在问题。

我的意见是,您永远不应该定义任何类型的自定义 HTTP 代码。如果你有这样的需求,那么在 99.99% 的情况下你做错了什么。想想,这个应用程序将来会由其他开发人员处理。他们如何理解 2003 代码的含义?

我的建议是寻找 nginx hacks 或更改它的设置,你应该更好地标准化你的应用程序。现有的 HTTP 代码已经足够处理任何类型的事情了。

此外,作为一种解决方案,您可以使用某种特定于应用程序的代码来响应 JSON。

【讨论】:

我已经与另一个团队讨论过自定义代码,但他们很坚决。所以帮不上忙。显然我正在研究 Nginx 文档来帮助解决它。还是谢谢。 @Sachin 听到这个我很难过。向他们展示您的主题:D 我能做的最后一件事是在我的应用程序中创建层以将其他团队的自定义代码映射到标准 http 代码,然后针对涉及这些代码的每个请求进行跟踪。

以上是关于Nginx 正在将自定义 http 代码转换为 502 错误网关的主要内容,如果未能解决你的问题,请参考以下文章

将自定义javascript对象转换为json [重复]

如何将自定义类型转换为原始类型?

Swift 4 如何将自定义对象数组转换为 JSON

如何正确地将自定义按钮集转换为响应对象?

如何将自定义 id 字段转换为普通整数字段?

如何将自定义 json 转换为自适应卡片 json 格式