问题标签 [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.
docker - docker 和 jwilder/nginx-proxy http/https 问题
我在 osx 上通过boot2docker
.
我有 2 台主机:site1.loc.test.com
并site2.loc.test.com
指向 docker 主机的 IP 地址。
两者都应该可以通过80
和443
端口使用。
所以我jwilder/nginx-proxy
用于反向代理目的。
但事实上,当我docker-compose
每次尝试通过80
端口打开时,我都会通过它们运行所有这些,我会重定向到443
(301 Moved Permanently)
.
可能是我在jwilder/nginx-proxy
配置中遗漏了什么?
码头工人-compose.yml
docker - jwilder/nginx-proxy 指向 nginx 欢迎屏幕
我正在尝试使用nginx-proxy docker 容器,但是如果我指向没有子域 (mydomain.com) 的域,那么我只会得到欢迎页面。我正在使用 Docker-Compose,我的 .yml 文件如下所示:
这是我的配置错误吗?
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
,但没有成功。有什么线索吗?
nginx - Docker nginx-proxy:容器之间的代理
我目前在我的公司中使用 Docker-Compose 运行一个开发堆栈,为开发人员提供他们编写应用程序所需的一切。
它特别包括:
- 一个 Gitlab 容器(sameersbn/gitlab)来管理私有 GIT 存储库,
- 用于构建和持续集成的 Jenkins 容器(library/jenkins ),
- 一个 Archiva 容器 ( ninjaben/archiva-docker ) 来管理 Maven 存储库。
为了通过 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:8080
Jenkins 容器中的 URL,它会起作用。但是这种配置是不可扩展的。
例如,使用 Gradle 构建编译一个应用程序,build.gradle 需要通过https://archiva.my-domain.com
. 如果从开发人员工作站启动构建,但不是通过 jenkins 容器启动,它将起作用......
另一个示例是通过 OAuth GitLab 服务在 Jenkins 中进行的身份验证,其中相同的 URL GitLab 身份验证需要从外部和 Jenkins 容器内部都可用。
我的问题是:如何配置 nginx-proxy 将请求从一个容器代理到另一个容器?
我没有看到任何讨论这个问题的话题,我对这个问题的理解还不够,无法在 nginx 配置上构建解决方案。
任何帮助将非常感激。
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。
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)寻找会导致这种情况的原因,但我什么也没想到。有人看出什么不对了吗?我是码头工人的新手,所以也许我错过了一些简单的东西。
提前致谢!:-)
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 ”。
同步后是否有任何选项可以拆分和获取参数,
建议或解决方案表示赞赏
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 容器。
期望的行为示例:
(这部分有效)
- 请求是http://sub1.mydomain.com/foo/bar.png
- /path/to/dockerized/webroot/foo/bar.png 不存在,所以请求被代理到远程ip。
(这部分不起作用)
- 请求是http://sub1.mydomain.com/foo/baz.png
- /path/to/dockerized/webroot/foo/baz.png 存在,所以请求被重写为http://sub1.mydomain.com/imageControl.php?file=foo/baz.png
- 请求被发送到上游 apache 容器
我会很感激一些帮助。
nginx - 如何更改 nginx-proxy 设置
我正在使用这个库:
https://github.com/jwilder/nginx-proxy
这是我的 docker-compose 文件:
我添加了 2 个新的节点服务...
我可以这样做:curl -H "Host: service2.local" localhost
并得到 service2 的响应......
问题是我从中获得了什么好处?以及如何在 80 端口上运行 service1?
这是Dockerfile
来自服务1:
nginx - 多个 docker 服务侦听同一主机和端口
我是 nginx 新手,我不确定这是正常行为...
这是我正在使用的库:https ://github.com/jwilder/nginx-proxy
我将在这里解释我试图完成的事情......
我有 2 个附加服务service1
,service2
这些服务是带有 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。