问题标签 [jwilder-nginx-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8237 浏览

docker - docker 和 jwilder/nginx-proxy http/https 问题

我在 osx 上通过boot2docker.

我有 2 台主机:site1.loc.test.comsite2.loc.test.com指向 docker 主机的 IP 地址。

两者都应该可以通过80443端口使用。

所以我jwilder/nginx-proxy用于反向代理目的。

但事实上,当我docker-compose每次尝试通过80端口打开时,我都会通过它们运行所有这些,我会重定向到443 (301 Moved Permanently).

可能是我在jwilder/nginx-proxy配置中遗漏了什么?

码头工人-compose.yml

0 投票
1 回答
990 浏览

docker - jwilder/nginx-proxy 指向 nginx 欢迎屏幕

我正在尝试使用nginx-proxy docker 容器,但是如果我指向没有子域 (mydomain.com) 的域,那么我只会得到欢迎页面。我正在使用 Docker-Compose,我的 .yml 文件如下所示:

这是我的配置错误吗?

0 投票
1 回答
936 浏览

nginx - 使用 jwilder/nginx-proxy 在同一容器的不同端口上运行虚拟主机

我正在尝试在 jwilder/nginx-proxy 后面运行 sonatype/nexus3,并将其用作 maven 和 docker 私有仓库。我想让 nginx 代理 nexus 子域到 nexus 容器的端口 8081,并将 docker 子域代理到同一容器的端口 8082。这可能吗?

首先,我nexus.mydomain.com使用 Let's Encrypt 证书使 maven 部分像 TSL 一样正常工作:

docker run --restart=always --name nginx -d -p 80:80 -p 443:443 -v /root/certs/:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

docker run --restart=always -d -p 8081:8081 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3

然后我意识到要运行一个 docker 私有存储库,我需要使用一个额外的端口。所以我在端口 8082 上创建了 docker repo,并使用保存的配置重新创建了容器,暴露了新端口和一个额外的子域:

docker run --restart=always -d -p 8081:8081 -p 8082:8082 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com,docker.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3

我尝试覆盖安装卷的 nginx 配置/etc/nginx/vhost.d,但没有成功。有什么线索吗?

0 投票
1 回答
2149 浏览

nginx - Docker nginx-proxy:容器之间的代理

我目前在我的公司中使用 Docker-Compose 运行一个开发堆栈,为开发人员提供他们编写应用程序所需的一切。

它特别包括:

为了通过 HTTPS 保护服务并将它们暴露给外界,我安装了优秀的 nginx-proxy 容器(jwilder/nginx-proxy),它允许使用容器上的环境变量自动配置 nginx 代理,并自动将 HTTP 重定向到 HTTPS .

DNS 配置为将 dockerized 服务的每个公共 URL 映射到主机的 IP。

最后,使用 Docker-Compose,我的 docker-compose.yml 文件如下所示:

对于开发人员工作站,一切都按预期工作。https://gitlab.my-domain.com可以通过和访问不同https://repo.my-domain.com的服务https://jenkins.my-domain.com

当一个 dockerized 服务访问另一个 dockerized 服务时,就会出现问题。例如,如果我尝试https://archiva.my-domain.com从 jenkins docker 访问,我会从代理收到超时错误。

似乎即使archiva.my-domain.com被解析为来自 docker 容器的公共主机 IP,来自 dockerized 服务的请求也不会被 nginx-proxy 代理。

据我了解,docker-nginx 正在处理来自主机网络的请求,但并不关心来自内部容器网络的请求(_dockerconfig_default_ 用于 Docker-Compose 堆栈)。

你可以说,为什么我需要使用容器中的代理?当然,我可以使用http://archiva:8080Jenkins 容器中的 URL,它会起作用。但是这种配置是不可扩展的。

例如,使用 Gradle 构建编译一个应用程序,build.gradle 需要通过https://archiva.my-domain.com. 如果从开发人员工作站启动构建,但不是通过 jenkins 容器启动,它将起作用......

另一个示例是通过 OAuth GitLab 服务在 Jenkins 中进行的身份验证,其中相同的 URL GitLab 身份验证需要从外部和 Jenkins 容器内部都可用。

我的问题是:如何配置 nginx-proxy 将请求从一个容器代理到另一个容器?

我没有看到任何讨论这个问题的话题,我对这个问题的理解还不够,无法在 nginx 配置上构建解决方案。

任何帮助将非常感激。

0 投票
1 回答
3361 浏览

nginx - Docker jwilder/nginx-proxy 位置配置

我有 3 个(app-client、app-a、app-b)应用程序在码头服务器和一个 NGINX 负载均衡器(app-lb)中运行。所有(内部或外部)请求都通过负载均衡器到达我的应用程序。根据 Web 上下文(/app-a/ 或 /app-b/)名称,LB 会将请求转发到正确的应用程序。我已经在 LB 中配置了(位置 /app-a/ 和位置 /app-b 和位置 /app-client)。app-a 会调用 app-b 和 app-b 会调用 app-a , app-client 会被外界调用, app-client 会调用 app-a 或 app-b。

我已经为我的应用程序编写了 Docker-composer。为了避免循环依赖,我使用了 Docker net。它运行良好。

如果我扩大我的应用程序。LB 不知道这个新的应用程序容器。

我已经阅读了一些教程并尝试使用jwilder/nginx-proxy而不是 NGINX。如果我使用 VIRTUAL_HOST=app-name 变量来使用它,它会在配置文件中更新上游。但是,我的应用程序是基于每个容器的位置映射运行的。如果我没有指定,请求将如何转到正确的容器。

如何在 LB 的 default.conf 文件中提供位置映射,如下所示,因为此配置由容器动态更新如何制作内部调用 url。

0 投票
1 回答
737 浏览

nginx - Docker 版本 1.13.1、Docker Swarm、jwilder/nginx-proxy 不会作为 docker 服务启动

我正在尝试按照本指南在 Docker 上设置 Elasticsearch 集群:https ://sematext.com/blog/2016/12/12/docker-elasticsearch-swarm/

但是在创建 jwilder/nginx-proxy 服务后,我一直收到关于 /tmp/docker.sock 的错误。下面的控制台截图来自新安装和更新的 CentOS7。我按照此处的说明通过 yum 安装了 docker:https ://docs.docker.com/engine/installation/linux/centos/

jwilder/nginx-proxy 容器在作为单个容器启动时工作,使用 -v 选项挂载 docker.sock。

我已经搜索了谷歌(Docker 文档、jwilder/nginx-proxy git)寻找会导致这种情况的原因,但我什么也没想到。有人看出什么不对了吗?我是码头工人的新手,所以也许我错过了一些简单的东西。

提前致谢!:-)

0 投票
1 回答
1945 浏览

nginx - 在 nginx 中拆分 request_uri

我是 Nginx 的新手,我正在尝试为特定格式的 URL 做 proxy_pass。

例如“ http://example.com/sync/test ”是用户访问的URL,内部URL必须对apache服务器做proxy_passs,“ http://localhost:8000/test ”需要排除同步,但现在它的重定向有“ http://localhost:8000/sync/test ”。

同步后是否有任何选项可以拆分和获取参数,

建议或解决方案表示赞赏

0 投票
1 回答
2724 浏览

nginx - nginx try_files 如果不存在则重写代理

我正在使用nginx docker容器(https://github.com/jwilder/nginx-proxy)将请求代理到apache在其他 docker 容器中运行的实例。每个子域都有自己的 apache docker 容器。这些子域之一 ( sub1 ) 需要一些特殊规则:

如果 URL 以“foo”开头,那么我希望 nginx 检查文件是否存在。如果文件存在,那么它应该将 URL 重写为访问控制脚本 (imageControl.php),并将其传递给通常的 apache 容器。如果该文件不存在,那么我希望将请求代理到远程服务器。

我以为我设置正确,但由于某种原因,nginx 总是将请求发送到远程服务器 - 即使文件存在于本地。

以下是 docker 容器中 nginx 配置文件的相关部分:

default.conf(包含在 nginx.conf 中):

/etc/nginx/vhost.d/sub1.mydomain.com :

请注意,我不希望 nginx 尝试运行 imageControl.php(我没有使用php-fpm) - 我希望 nginx 将其传递给上游 apache 容器。

期望的行为示例:

  1. 这部分有效

  2. 这部分不起作用

我会很感激一些帮助。

0 投票
1 回答
613 浏览

nginx - 如何更改 nginx-proxy 设置

我正在使用这个库:

https://github.com/jwilder/nginx-proxy

这是我的 docker-compose 文件:

我添加了 2 个新的节点服务...

我可以这样做:curl -H "Host: service2.local" localhost并得到 service2 的响应......

问题是我从中获得了什么好处?以及如何在 80 端口上运行 service1?

这是Dockerfile来自服务1:

0 投票
1 回答
1447 浏览

nginx - 多个 docker 服务侦听同一主机和端口

我是 nginx 新手,我不确定这是正常行为...

这是我正在使用的库:https ://github.com/jwilder/nginx-proxy

我将在这里解释我试图完成的事情......

我有 2 个附加服务service1service2这些服务是带有 API 端点的简单 node.js 图像

这是从命令生成的配置文件:http docker exec nginx-proxy cat /etc/nginx/conf.d/default.conf: //pushsc.com/show/code/58f739790a58d602a0b99d22

另外,当我在浏览器中访问 localhost 时,我得到:

欢迎使用 nginx!

如果您看到此页面,则 nginx Web 服务器已成功安装并正在运行。需要进一步配置。

有关在线文档和支持,请参阅 nginx.org。nginx.com 上提供商业支持。

感谢您使用 nginx。