首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx docker不重定向gogs docker容器

nginx docker不重定向gogs docker容器
EN

Stack Overflow用户
提问于 2021-11-16 14:04:07
回答 1查看 80关注 0票数 1

我刚接触docker网络和nginx的东西,但是尝试在本地devserver上"dockerize“所有东西。用于测试带有nginx的docker镜像,该镜像应将另一个容器(gogs)从端口3000重定向到端口为80的特定url。我想让反向代理配置和docker镜像“分离”,为每个"app“创建一个自己的docker-compose文件。

因此,我应该使用http://app.test.local来安装gog。但是:我使用http://app.test.local只访问了nginx的一个糟糕的网关,而使用http://app.test.local:3000我访问了gog安装……

我尝试了很多教程,但总会有一些错误,那就是每次都会出错。

所以我做了什么:

代码语言:javascript
复制
$ docker network create testserver-network

为nginx创建docker-compose:

代码语言:javascript
复制
version: '3'

services:
  proxy:
    container_name: proxy
    hostname: proxy
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - /docker/proxy/config:/etc/nginx
      - /docker/proxy/certs:/etc/ssl/private
    networks:
      - testserver-network
networks:
  testserver-network:

一个用于gogs:

代码语言:javascript
复制
version: '3'

services:
  gogs:
    container_name: gogs
    hostname: gogs
    image: gogs/gogs
    ports:
      - 3000:3000
      - "10022:22"
    volumes:
      - /docker/gogs/data:/var/gogs/data
    networks:
      - testserver-network
networks:
  testserver-network:

(映射目录有效)

配置nginx的default.conf:

代码语言:javascript
复制
# upstream gogs {
#   server      0.0.0.0:10880;
# }

server {
  listen        80;
  server_name   app.test.local;

  location / {
    proxy_pass  http://localhost:3000;
  }
}  

并添加到客户端app.test.local <server ip>上的主机文件中

docker exec proxy nginx -tdocker exec proxy nginx -s reload说一切都很好..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 19:48:00

答案

您应该将这两个容器连接到相同的docker网络,然后将代理连接到http://gogs:3000。您也不需要在本地主机上公开端口3000,除非您想让http://app.test.local:3000工作。我认为理想情况下你应该删除它,所以http://app.test.local应该代理你的gogs服务器,而http://app.test.local:3000应该会出错。

解释

gogs在其容器内的端口3000上公开,然后在主机上的端口3000上进一步公开。nginx容器没有访问您主机上的端口3000的权限,所以当它试图代理http://localhost:3000时,它会代理到nginx容器内的端口3000 (没有托管任何内容)。

将容器连接到同一网络后,您应该能够通过nginx容器的主机名(已设置为gogs)从nginx容器引用gogs容器。现在,nginx将通过docker网络进行代理。因此,您应该能够在不需要在本地计算机上公开3000的情况下执行代理。

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

https://stackoverflow.com/questions/69990549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档