问题标签 [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-compose 和 nginx 代理
我正在尝试使用jwilder/nginx-proxy作为我的 angular2 应用程序的反向代理,该应用程序分为 3 个容器(角度、快递和数据库)。
我尝试了不同的配置来在端口 80 上代理对我的应用程序的请求,但是当我尝试运行 docker-compose 时,我得到:
虽然消息很清楚,端口 80 上存在冲突,但我无法找到绕过它的方法,当我将 angular 容器设置为在端口 4200 上工作时它工作得很好,但是我必须指定端口号每次我想访问该页面时都在 url 中。我正在使用反向代理,因为它不是将在我的环境中运行的唯一应用程序
下面是我的 docker-compose.yml
和Dockerfile用于 Angular 容器
docker - 使用 jwilder/nginx-proxy 具有不同端口和相同域的多个服务
我在 docker-compose 中有一些服务:
我可以连接到暴露的服务端口:
- 站点——本地主机:80
- Webpack——本地主机:8080
- MySQL:--本地主机:3306
如何使用 nginx-proxy 公开同一域上不同服务器的多个端口(?):
- 站点——example.dev:80
- Webpack——example.dev:8080
- MySQL:--example.dev:3306
这有效:
但这不是:
我做错了什么?我怎么解决这个问题?
//Sorry for my worst English. Hope you'll understand me
更新:
这只是一个例子。将来我会将代理作为外部网络并将服务连接到它。而且我不会docker-compose
在同一主机(VPS)上运行两个“文件”。目的:同一主机上的生产和测试版本,使用相同的端口但不同的域。例如:
- example.com——网站
- example.com:81 -- PhpMyAdmin
- test.example.com -- 测试网站
- test.example.com:81 -- 用于测试的 PhpMyAdmin
docker - 如何让 Docker 容器看到真实的用户 IP?
问题
在nginx-proxy
Docker 容器内(更多信息见下文),我总是为每个连接看到相同的 IP 地址:(172.18.0.1
即nginx-proxy
网络网关)。例如:
无论我是从外部网络、本地机器还是从服务器(主机)本身发出请求,IP 地址始终是172.18.0.1
.
我需要的是查看真实的客户端 IP。
尝试修复
我用谷歌搜索了很多,并尝试了不同的解决方案,但没有一个对我有用。我尝试了以下方法:
- 禁用firewalld(在这种情况下根本不起作用,当然,iptables是空的);
- 使用
--userland-proxy=false
(没有运气); - using
--net=host
(根本不是解决方案,也不起作用)。
相关链接:
那么,有什么想法吗?似乎是 iptables 路由问题或内部 Docker 错误。无论如何,它肯定与 Docker 有关,因为以下显示正确的远程用户 IP:
很奇怪!
现在我将提供有关系统的完整信息,所以请耐心等待。:)
基本的
我安装了 Centos 7.4 和 Docker:
firewalld用作防火墙。
网络配置
接口
共有三个物理接口:
还有一个虚拟桥(enp1s0
和enp2s0
):
防火墙区域
enp3s0 接口连接到 Internet ( --zone=public
),并virbr0
连接到内部本地网络 ( --zone=internal
)。
转发和伪装
IPv4 转发已启用:
并且区域上的伪装public
配置了firewalld:
码头工人配置
Docker 有默认配置。
联网
我只创建了一个网络:
这是它的配置:
图像和容器
我正在使用jwilder/nginx-proxy图像。这是我的docker-compose.yml
:
如您所见,nginx-proxy
容器正在侦听端口80
和443
所有接口。
iptables
容器相关规则
以下是与容器相关的 iptables 规则:
完整的 iptables 规则列表
这是完整的输出iptables-save
:
wordpress - 反向代理中的所有 docker 容器都重定向到同一个域
我已经设置了一个 docker 服务器,其中我有 4 个 docker 容器,3 个有 wordpress,另一个有 contao .. 但是所有 wordpress docker-compose.yml 文件都像往常一样具有不同的域。但是,当我在浏览器中输入其他域时,它们都会将我重定向回其中一个域。我检查了日志,我可以看到有一个 301 wc 我知道是重定向。那么我应该怎么做任何有相同经历的人?
欢迎任何帮助。
这就是我用来创建反向代理和 ssl 加密的方法。
这是正在使用的 docker-compose.yml 文件之一,其余的只是更改公开的域和端口。
mysql - 登录后 Docker phpmyadmin:504 网关超时
尝试使用 docker phpmyadmin 连接几个不同的 mysql 本地(容器)和远程服务器。在我开始登录之前一切正常 - 连接到远程服务器就像一个魅力,问题是连接本地服务器的容器。我的 compose 配置文件如下所示:
- 尝试将 mysql 容器添加到与 nginx 代理相同的网络(与 phpmyadmin 相同的子网)。
- 尝试了不同的端口和 IP-s 和变体。
使用:
码头工人本身:
docker - Docker Compose 和 Nginx 反向代理:我无法通过代理访问后端
我有一个包含 3 个容器的项目:反向代理容器(jwilder-nginx-proxy 映像)、fontend 容器(为由 Vue js 开发和捆绑的应用程序提供服务的 nginx 容器)和一个后端容器(为 NodeJs+ExpressJs 应用程序提供服务的 node6 容器)。后端和前端都在反向代理之后。以下是它在我的本地主机中的工作方式:
- 访问http://localhost:80/并提供 gui
- gui 应该通过http://localhost:3500从后端检索数据
一切似乎都运行良好,除了后端容器。当我尝试访问后端时,我收到“502 bad gateway”错误。这是 nginx 记录的内容:
- GUI 加载得非常好。我对后端使用了相同的逻辑,但没有任何效果。
- 后端应用程序绑定到容器内的端口 3000 并映射到外部的 3500。
在我的后端 Dockerfile 中,我使用了这个:
这是我的 docker-compose.yml 文件:
gui 也是如此,它是一个 nginx 服务器,监听容器内部的 8080 并映射到容器外部的 80 端口,我在 Dockerfile 中使用了它:
我认为我的 nginx.conf 文件(我用来配置反向代理而不是 GUI 应用程序的文件)有问题:
nginx.conf(反向代理配置):
我的 docker-compose 文件有问题吗?还是 nginx 配置?我对前端和后端使用了相同的逻辑。只有后端不工作。前端正在工作。
我没有在 nginx-reverse-proxy 的 Dockerfile 中使用暴露指令,因为我正在映射 compose 文件中的端口。
希望有人可以帮助我。
谢谢
编辑: 似乎一切都配置得很好。问题是节点 js 应用程序。似乎 Nginx 无法处理对 nodejs 应用程序的请求......有人可以帮忙吗?
docker - fastcgi上的Docker nginx反向代理502错误
我正在尝试构建多网站 docker 服务器。
我想要一个容器用于代理,另一个容器用于网站。由于性能更好,我也想使用 fastcgi。
我正在使用jwilder/nginx-proxy
问题:设置 fastcgi (- VIRTUAL_PROTO=fastcgi) 导致 502 Bad Gateway 错误:
网站容器
NGINX-代理容器
来自 NGINX 代理容器的 NGINX 配置文件
为什么我的 nginx-proxy 容器看不到我的网站?我把端口搞砸了吗?
docker - Jwilder nginx 代理 - docker compose 结构更新后的 503
我正在使用jwilder/nginx-proxy
单独docker-compose.yaml
的 . 它看起来像这样:
我已经使用了很长时间,当我的项目docker-compose.yaml
如下所示时它工作正常:
我可以毫无问题地访问网站http://test.local
或使用https://test.local
预期的内容。
但是我不得不将我的文件结构更新到较新的版本:
之后它似乎不起作用。我可以毫无问题地使用 ip 和端口访问站点,但我不能再使用域来访问它。当我尝试时,我得到:
503服务暂时不可用
nginx/1.13.8
这肯定来自 jwilder nginx(而不是项目中的 nginx)。
所以问题是 - 我应该在哪里放置环境变量以使其工作?似乎当它们按原样放置时,它们不会被代理读取。
docker - 使用 Nginx + Docker 时 DigitalOcean 上的域 DNS 设置问题
从这里学习教程:https ://blog.ssdnodes.com/blog/tutorial-extending-docker-nginx-host-multiple-websites-ssl/
nginx-proxy 仓库:https ://github.com/jwilder/nginx-proxy
我无法理解如何为托管在 Digital Ocean 上的 docker + nginx 机器正确设置子域。
我想使用nginx-proxy 设置一个具有多个 Wordpress 实例的 docker + 让我们在以下方案中进行加密:
mydomain.com --> 所有 wordpress 子域的列表
wp1.mydomain.com --> Docker 上安装的单个 WP 实例
wp2.mydomain.com --> 安装在 Docker 上的另一个 WP 实例
为了使反向代理正常工作,我是否应该在 Digital Ocean 域面板中添加子域?
如果我应该,该子域应该指向哪里?我用的是单VPS,主域指向VPS IP。如果我做对了,我的子域应该指向类似 [myserverIP]:[dockerContainerPortNumber] 但是在域设置面板中设置它之后配置 nginx-proxy 有什么意义?
我认为配置的其余部分工作正常,我只是无法理解如何设置这些子域,因此内部路由开始正常工作。
amazon-web-services - 使用 AWS ECS 在 Node/Express Web 中强制使用 ssl
我有一个集群(在自动缩放中可能有 N 个实例),并且我有一个在 Node/Express 中完成的网站服务。
我有一个弹性负载均衡器,它有一个目标组,监听器指向这个目标组的特定路径。
一切都按预期工作,网站加载,我可以在有和没有 https 的情况下访问,但我怎样才能使 HTTPS 强制从 HTTP 重定向?我在 ECS 中没有任何代理(不知道 nginx-proxy 是否支持我的集群中的多个实例)
谢谢