Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >nginx反向代理到其他nginx 502坏网关

nginx反向代理到其他nginx 502坏网关
EN

Stack Overflow用户
提问于 2021-01-26 11:23:01
回答 1查看 746关注 0票数 0

我想创建两个服务,它们都有自己的nginx。我想使用第三条nginx作为这两条的反向代理,但我得到了

502坏网关

当我请求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8080/
http://127.0.0.1:8080/one
http://127.0.0.1:8080/two

获得:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8081
http://127.0.0.1:8082

工作正常

我有这个码头-复合的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.3"
services:
  nginx-one:
    image: nginx:1.17.8
    ports:
      - "8081:80"
    networks: 
      - frontend
      - backend
    volumes: 
      - ./nginx-one/html:/usr/share/nginx/html
  nginx-two:
    image: nginx:1.17.8
    ports:
      - "8082:80"
    networks: 
      - frontend
      - backend
    volumes: 
      - ./nginx-two/html:/usr/share/nginx/html
  nginx-reverse-proxy:
    image: nginx:1.17.8
    ports:
      - "8080:80"
    networks: 
      - frontend
      - backend
    volumes: 
      - ./nginx-reverse-proxy/html:/usr/share/nginx/html
      - ./nginx-reverse-proxy/conf.d:/etc/nginx/conf.d
  debian-network:
    image: cslev/debian_networking
    stdin_open: true # docker run -i
    tty: true        # docker run -t
    networks: 
      - frontend
      - backend
networks:
  frontend:
    internal: false
  backend:
    internal: true

和dir结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── docker-compose.yml
├── nginx-one
│   └── html
│       └── index.html
├── nginx-reverse-proxy
│   ├── conf.d
│   │   └── default.conf
│   └── html
│       └── index.html
├── nginx-two
    └── html
        └── index.html

nginx.conf含量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Con.d/default.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {

    listen 80;

    location /one {
        proxy_pass http://127.0.0.1:8081/;
    }

    location /two {
        proxy_pass http://127.0.0.1:8082/;
    }
}

当我评论这行docker-come.yml时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ./nginx-reverse-proxy/conf.d:/etc/nginx/conf.d

因此不使用conf.d/default.conf,我从主机的浏览器请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8080/

它给出了来自nginx-反向代理本身的适当响应,但很明显。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8080/one
http://127.0.0.1:8080/two

不要提供任何回应

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://127.0.0.1:8081
http://127.0.0.1:8082

而不是404。

码头ps输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IMAGE                     COMMAND                  CREATED          STATUS         PORTS                  NAMES
cslev/debian_networking   "bash"                   25 minutes ago   Up 3 minutes                          nginxproblem_debian-network_1
nginx:1.17.8              "nginx -g 'daemon of…"   47 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp   nginxproblem_nginx-reverse-proxy_1
nginx:1.17.8              "nginx -g 'daemon of…"   14 hours ago     Up 3 minutes   0.0.0.0:8082->80/tcp   nginxproblem_nginx-two_1
nginx:1.17.8              "nginx -g 'daemon of…"   14 hours ago     Up 3 minutes   0.0.0.0:8081->80/tcp   nginxproblem_nginx-one_1

运行此脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/sh

docker exec nginxproblem_debian-network_1 curl -sS 127.0.0.1:8080
docker exec nginxproblem_debian-network_1 curl -sS nginxproblem_nginx-reverse-proxy_1:8080

docker exec nginxproblem_debian-network_1 curl -sS 127.0.0.1:8080/one
docker exec nginxproblem_debian-network_1 curl -sS nginxproblem_nginx-reverse-proxy_1:8080/one
docker exec nginxproblem_debian-network_1 curl -sS 127.0.0.1:8080/two
docker exec nginxproblem_debian-network_1 curl -sS nginxproblem_nginx-reverse-proxy_1:8080/two

docker exec nginxproblem_debian-network_1 curl -sS 127.0.0.1:8081
docker exec nginxproblem_debian-network_1 curl -sS nginxproblem_nginx-one_1:8080

docker exec nginxproblem_debian-network_1 curl -sS 127.0.0.1:8082
docker exec nginxproblem_debian-network_1 curl -sS nginxproblem_nginx-two_1:8082

给予:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
curl: (7) Failed to connect to nginxproblem_nginx-reverse-proxy_1 port 8080: Connection refused
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
curl: (7) Failed to connect to nginxproblem_nginx-reverse-proxy_1 port 8080: Connection refused
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
curl: (7) Failed to connect to nginxproblem_nginx-reverse-proxy_1 port 8080: Connection refused
curl: (7) Failed to connect to 127.0.0.1 port 8081: Connection refused
curl: (7) Failed to connect to nginxproblem_nginx-one_1 port 8080: Connection refused
curl: (7) Failed to connect to 127.0.0.1 port 8082: Connection refused
curl: (7) Failed to connect to nginxproblem_nginx-two_1 port 8082: Connection refused

- ./nginx-reverse-proxy/conf.d:/etc/nginx/conf.d未被注释时,

与从浏览器访问ip地址相反地注释- ./nginx-reverse-proxy/conf.d:/etc/nginx/conf.d时的相同输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 13:59:29

除非启用了主机联网,否则127.0.0.1将指向容器本身。您可以通过服务名称(例如nginx-onenginx-two )从同一网络中的容器中引用其他两个容器。

您还将容器端口80映射到主机上的端口8080/8081/8082。然而,这对同一网络中的容器之间的通信没有任何作用。检查医生们

默认情况下,当使用docker或docker运行创建或运行容器时,它不会将其任何端口发布到外部世界。若要使端口可用于Docker以外的服务或未连接到容器网络的Docker容器,请使用-publish或-p标志。这将创建一个防火墙规则,将容器端口映射到Docker主机上的端口到外部世界。

因此,尝试将http://127.0.0.1:8081/;更改为http://nginx-one/;,它应该可以工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65907904

复制
相关文章
nginx 502
错误: nginx 转发报502错误。查看错误日志: [error] 5056#0: *180 connect() failed (113: No route to host) while connecting to upstream 百度了一下说是防火墙问题,果然,把要转发的服务器防火墙关闭就ok了
红目香薰
2022/11/28
7060
Nginx反向代理到Tomcat的多个项目
server     {         listen      80;         server_name  linux.linuxidc.com;          location / {    proxy_pass http://localhost:8080/;         }   proxy_set_header  X-Real-IP  $remote_addr;         proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;   proxy_set_header  Host  $http_host;  }
星哥玩云
2022/06/30
3900
Nginx反向代理某些请求出现502 Bad Gateway
Nginx跳转到另一台服务器提供的服务上,发现某些接口出现502错误,但这个接口有些时候是正常的,服务端的日志没有接收到改请求。通过IP测试访问正常,故怀疑是Nginx的问题。 后来找到说压力太大,需要增加缓存。 配置了两个地方:
geekfly
2022/04/24
2.2K0
Nginx反向代理某些请求出现502 Bad Gateway
nginx的502问题
1.配置错误 因为nginx找不到php-fpm了或者socket文件权限不对,所以报错,一般是fastcgi_pass后面的路径配置不当,后面可以是socket或者是ip:port,从php5.4版本之后如果使用socket方式,默认权限给的比较低,所以需要把监听权限改为777,对应配置为 listen.mode=0777 2.资源耗尽 lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会
老七Linux
2018/05/31
1.4K0
nginx反向代理https域名时,请求报错502问题排查
在使用nginx反向代理后端服务器的时候,因为配置的是域名,导致HTTPS 请求转发失败,报 SSL 错误,js 报 502
没有故事的陈师傅
2023/08/09
3.9K0
nginx反向代理https域名时,请求报错502问题排查
Nginx中的502和504
Nginx作为一个流行、轻量、高性能、稳定的web服务器,是应用运维日常最常接触的web服务器,更多的时候它是用于web代理服务,今天要说的是日常维护Nginx中最常遇到的两个HTTP状态码502和504
李俊鹏
2020/06/15
8.4K0
Nginx中的502和504
Nginx(三)------nginx 反向代理
  Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡。本篇博客我们会先介绍 Nginx 的反向代理,当然在了解反向代理之前,我们需要先知道什么是代理以及什么是正向代理。
IT可乐
2018/09/28
1.9K0
Nginx(三)------nginx 反向代理
nginx反向代理websocket,nginx配置websocket转发,nginx socket反向代理, nginx支持websocket
配置完后,如果 server_name 为 www.test.com,就可以在 JavaScript 中这样访问:
高久峰
2023/06/22
2.8K0
Nginx 反向代理
代理在生活中非常常见,房屋中介是代理、终端零售是代理、选举代表是代理。这些代理都可以帮助需求方减轻很多工作的复杂度,提升效率和体验。
jwangkun
2021/12/23
1.3K0
Nginx 反向代理
Nginx反向代理
nginx正向代理就是私网到公网 nginx反向代理就是公网到私网 获取请求网址 proxy_set_header Host $proxy_host; 代理服务器记录客户端IP proxy_set_header X-Real_IP $remote_addr; 反向代理后服务器获取客户端真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; nginx代理与后端服务器连接超时时间(代理链接超时) Syntax: proxy_conne
云计算小黑
2021/06/16
7540
Nginx反向代理
在网站—-设置—-配置文件 复制以下代码 放到配置文件中的最后一个大括号之前 然后保存
CiiLii西里网
2023/04/18
2720
Nginx反向代理
Nginx反向代理
代理服务器顾名思义,客户机在向目的主机发送请求的时候,不会直接发送,而是先发送给代理服务器,代理服务器接受客户机请求之后,再向之际发出。代理服务器同样可以接收主机返回的数据,存放在代理服务器的硬盘中,再发给客户机。核心是转发。
CodeWwang
2022/08/24
4450
Nginx反向代理
Nginx反向代理
Nginx反向代理 假设程序监听5244端口 在网站的配置文件的server字段中加入 location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Range $http_range; proxy_s
小妍树洞
2022/11/05
3440
Nginx反向代理
客户端访问数据的时候,不会直接与目标服务器进行连接,而是所有的请求都发送到代理(Proxy)服务器,然后代理服务器会去根据你的请求去访问相应的服务器,并最终返给你你想要的数据。 其实说白了代理服务器的功能就是代理网络用户去取的网络信息。相当于网络信息的中转站。
令仔很忙
2018/09/14
1.2K0
Nginx反向代理
Nginx反向代理
Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能。
胡齐
2019/09/23
6430
Nginx反向代理
Nginx反向代理
反向代理的原理 简单来说就是B站点反代A站点 用户访问B站点 B站点在去获取A站点的资源内容 反向代理的好处是什么? 首先就是安全,因为B站点反代A站点 用户访问B站点即可获取A站点的内容,不用暴露源站的IP也不需要存储数据 其次就是速度,因为B站点不需要存储数据就可以降低网络带宽和服务器的内存及CPU负载,就可以提高访问效率 也不用担心数据被盗取、网站被攻击之类的 当然被D的话还是会死,但是对方不会知道你A站点的IP 这个时候B站点被打死了 你就可以随时换一台服务器域名解析过去接着使用就可以无缝衔接 反代也不用担心数据被某些不道德的服务商盗取或者跑路 因为B站点是不需要存储A站点的任何数据的
洛叶的Blog
2023/04/13
2660
Nginx反向代理
nginx反向代理
实际上我们可以将代理比作明星的经纪人,众所周知娱乐圈明星都有一个标配的经纪人,这个经纪人可以代替明星做一些事情,如提提箱子,拦拦粉丝等
切图仔
2022/09/08
2060
nginx反向代理
nginx反向代理
1.安装gcc 安装redis需要先将官方下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装。
@凌晨
2020/05/28
4130
nginx反向代理
客户端发出请求到代理服务器上,然后代理服务器帮他去后台请求资源,客户端认为代理服务器就是原始的web服务。然后由反向代理服务器去帮他请求资源。
张琳兮
2019/03/14
9790
nginx反向代理
Nginx 反向代理
  在 Java 设计模式中,代理模式指:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。简单来说就是我想要买一套房,但是这需要我自己去跑楼盘,看房子,比较麻烦,然后我就去做中介的朋友哪里,让他帮我搞定,我付钱就好了。这就是代理的思想,娱乐圈中的经纪人也可以理解为代理。即我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做,这个就是代理。
Demo_Null
2020/09/28
9720
Nginx 反向代理

相似问题

Nginx反向代理到Docker 502坏网关

11

Nginx反向代理到HTTPS上游得到502坏网关?

135

502坏网关Nginx反向代理

10

Nginx反向代理:抛出502坏网关

112

Nginx反向代理给出“502坏网关”

221
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文