我有一个在Docker外部在端口5000上运行的应用程序。我试图通过Dockercompose在nginx中运行反向代理,但无法与主机的端口5000通信。在我的docker-compose.yml文件中,我具有:
ports:
- 80:80
- 443:443
- 5000:5000
当我尝试运行此命令时,我得到:
ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (374026a0d34c8b6b789dcd82d6aee6c4684b3201258cfbd3fb18623c4101): Error starting userland proxy: listen tcp 0.0.0.0:5000: bind: address already in use
如果我注释掉,- 5000:5000
我得到:
[error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream
如何从Docker Nginx容器连接到主机中已运行的应用程序?
编辑:
我的nginx.conf文件
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
upstream mysite {
server 0.0.0.0:5000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://mysite;
}
}
}
当我尝试卷曲localhost时,响应为502 Bad Gateway
。该应用程序本身和curl 127.0.0.1:5000从主机响应良好。
编辑2:我也尝试过这里找到的解决方案,但得到了nginx: [emerg] hostnot found in upstream "docker"
。Docker是我的主机的主机名。
编辑3:我的docker-compose.yml
version: '3'
services:
simple:
build: ./simple
container_name: simple
ports:
- 80:80
- 443:443
我的Dockerfile:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]
编辑:
我正在通过Linux中的“主机名”命令来获取计算机主机。
问题在于0.0.0.0:5000。由于Nginx在docker内部运行,因此它尝试在docker机器内查找该地址,但由于在docker内部没有任何运行在0.0.0.0:5000上而失败。
所以为了解决这个
主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过
Nginx 是一个高性能的 HTTP 和反向代理服务器,代码完全用 C 实现,基于它的高性能以及诸多优点,我们可以把它设置为 hyperf 的前置服务器,实现负载均衡或 HTTPS 前置服务器等。 配置 Http 代理 # 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP Server 的 IP 及 端口 server
我试图使用nginx作为双向SSL/相互SSL的web逻辑的反向代理。 客户端<=双向SSL=>NGINX<=双向SSL=>WebLogic服务器 客户端到NGINX双向SSL工作良好,但在上游连接到web逻辑上出现以下错误。 nginx调试日志: 以下是我对上游的nginx配置: 我尝试了各种选项,包括注释下面的配置。 如果我尝试使用openssl c_client命令行,我能够连接并获得HTT
我之前没有使用过nginx的反向代理, 目前在使用webman框架. https://www.workerman.net/doc/webman/others/nginx-proxy.html 他的这篇文章中给出了一个示例配置, 我在AMH的LNGX虚拟主机中是这样设置的. 后面也添加了SSL, 目前访问是没什么问题的, 但是在上述webman的示例中有一行 root /your/webman/pu
本小节,我们继续学习 Nginx 在 七层反向代理中的其它几种比较常见的情况,比如 web 服务中的 WebSocket 协议的反向代理和 uwsgi 协议的反向代理。 1. WebSocket的反向代理 WebSocket 是目前比较成熟的技术了, WebSocket 协议为创建客户端和服务器端需要实时双向通讯的 webapp 提供了一个选择。服务器可以向浏览器推送相关消息,这样在前端实现的某个
Nginx 最强大的地方是在于其 HTTP 请求的反向代理,也即常说的七层反向代理。在这一层代理中,通过 Nginx 框架提供的相关配置,我们能在该层将发送过来的 http 协议转换成各种其他的协议比如 fastcgi 协议、uwsgi协议、grpc、http(高版本协议)、websocket协议等。这样使用 Nginx 框架,我们可以支持多种应用服务(java web、python web等)的