假设我有三个带有nginx的docker容器。它们暴露的端口分别映射到8080、8181和8282。我想在8080上配置服务器,将/example01和/example02代理给另外两个应用程序。这是我的配置文件:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/;
index index.html index.htm;
}
location /example01 {
proxy_pass http://localhost:8181/;
}
location /example02 {
proxy_pass http://localhost:8282/;
}
}
因此,如果我运行容器,每个应用程序都是可访问的(http://localhost:8080、http://localhost:8181和http://localhost:8282)。
现在,我真的不明白为什么http://localhost:8080/example01和http://localhost:8080/example02没有正确重定向。相反,我得到了一个502错误网关。这与我的暴露端口和VIRTUAL_PORT有关吗?
提前感谢。
这是因为容器网络范围。这些容器的本地主机
,分别位于每个容器内-而这不是端口映射到的位置。相反,请执行以下操作:
$ ifconfig
在您的主机上,找到您的本地ip地址,并将流量代理到您的主机(已映射端口)。
形态:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/;
index index.html index.htm;
}
location /example01 {
proxy_pass http://192.168.1.2:8181/;
}
location /example02 {
proxy_pass http://192.168.1.2:8282/;
}
}
其中< code>192.168.1.2是您自己机器的本地ip地址。
另一种方法是链接这些容器,而不是通过localhost代理-而是链接定义中提供的别名。如果你选择这种方法,我可以详细说明。
-用链接方法编辑-
为了链接您的服务,您需要使用 docker 工具 docker-compose
。假设你熟悉它是什么(底部的doc refs),你可以写一个这样的撰写文件:
first-nginx:
build: first-nginx/
ports:
- 8080:80
links:
- second-nginx
- third-nginx
second-nginx:
build: second-nginx/
ports:
- 8081:80
third-nginx:
build: third-nginx/
ports:
- 8082:80
放置在项目的根目录中,如下所示:
root
- first-nginx
+ nginx.conf
+ Dockerfile
+ some-other.files
- second-nginx
+ some.files
+ another-nginx.conf
+ Dockerfile
- third-nginx
+ some-nginx.conf
+ Dockerfile
+ docker-compose.yml
您可以配置“主”nginx以利用创建的链接,如下所示:
形态:
server {
listen 80;
location / {
root /usr/share/nginx/html/;
index index.html index.htm;
}
location /example01 {
proxy_pass http://second-nginx/;
}
location /example02 {
proxy_pass http://third-nginx/;
}
}
如果有什么不清楚的地方,一定要问。
链接参考
撰写参考
我需要创建一些docker容器,这些容器必须由同一网络上的其他计算机访问。 问题是,当我创建容器时,Docker获得的IP地址仅在主机内有效。
我希望我的UI通过我的节点服务器获取数据,其中每个都是一个独立的容器。如何使用docker-compose文件连接它们? 我有三个运行mongodb、node server和oracle jet for ui容器,我想通过oraclejet ui访问node API,通过node访问mongo db,所以我定义了这个Docker-Compose。mongo和node工作之间的链接。
27.6 通过代理访问MBeans Spring JMX 允许你创建代理,它将重新路由到本地或者远程MBeanServer中注册的MBean。这些代理提供了标准的Java接口来和MBean进行交互。下面的代码展示了如何在本地允许的MBeanServer中配置代理: <bean class="org.springframework.jmx.access.MBeanProxyFactoryBean">
21.6. 通过代理访问MBeans Spring JMX允许你创建代理,这个代理改变到注册到本地或远程 MBeanServer 的MBean的调用。 这些代理提供里一个标准的Java接口,通过它,你可以和MBean相合。 下面的代码展示了如何为一个运行在本地 MBeanServer 的配置一个代理: bean id="proxy"> <property name="objectName"
问题内容: 我有一台具有分配给一个网络接口的多个IP地址的主机。我想配置Docker,以使容器将每个容器“响应”到分配给主机的这些IP地址的单个IP。 可以使用libcontainer完成此操作,还是必须使用LXC驱动程序并使用来运行我的容器? 提前致谢。 更新 我希望每个容器都可以从外面拿到。使用默认Docker配置时,我只能暴露端口并不能通过到达容器。可以以某种方式配置第二个选项吗? 问题答案
问题内容: 如何通过JQuery Post传递Javascript数组,以便可以通过PHP $ _POST数组访问其所有内容? 请显示可以解决问题的代码示例。 谢谢! 问题答案: 如果要传递JavaScript对象/哈希(即PHP中的关联数组),则可以执行以下操作: 如果您想传递实际的数组(即PHP中的索引数组),则可以执行以下操作: 如果要传递JavaScript数组,则可以执行以下操作: