我正在尝试使用正式的nginx映像(https://hub.docker.com/_/nginx)来服务静态内容,并将代理反向代理到另一个停靠容器中的api服务器。它们都是由坞-组合调用带来的,因此它们应该是同一个网络的一部分。
当我查看日志时,我看到这样的错误,其中nginx无法与上游服务器对话。我担心的是,我看到了http://localhost/users?sort=lastName%2Cdesc
,看起来它没有遵守上游的端口设置,这当然会失败。我不知道应该如何配置才能使其与之匹配。我读过的所有指南都有uri声明和上游url声明的组合,不管有没有尾斜杠,这些都不能满足我的需要。
7#7:*3在连接上游时没有活动的上行流,客户端: 10.0.2.2,服务器: localhost,请求:"GET /api/user?sort=lastName%2Cdesc HTTP/1.1",上游:"http://localhost/users?sort=lastName%2Cdesc",主机:"localhost",引用者:"http://localhost/“
码头用品
API在8081上
客户端在8080上
客户端应该将/api/*的任何内容转发给8081码头http://localhost:8081/,并删除/api/部分。
Dockerfile
将所有静态html复制到/usr/share/nginx/html,将配置复制到/etc/nginx/nginx.conf中。
FROM nginx
COPY . /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
RUN rm -f /usr/share/nginx/html/Dockerfile
RUN rm -f /usr/share/nginx/html/nginx.conf
nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /api/ {
proxy_pass http://localhost:8081/;
}
}
}
nginx原木
2019/10/11 00:21:38 [error] 7#7: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/skills HTTP/1.1", upstream: "http://127.0.0.1:8081/skills", host: "localhost", referrer: "http://localhost/"
2019/10/11 00:21:38 [warn] 7#7: *3 upstream server temporarily disabled while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/skills HTTP/1.1", upstream: "http://127.0.0.1:8081/skills", host: "localhost", referrer: "http://localhost/"
2019/10/11 00:21:38 [error] 7#7: *4 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/jobs?sort=createdDate%2Cdesc HTTP/1.1", upstream: "http://localhost/jobs?sort=createdDate%2Cdesc", host: "localhost", referrer: "http://localhost/"
10.0.2.2 - - [11/Oct/2019:00:21:38 +0000] "GET /api/jobs?sort=createdDate%2Cdesc HTTP/1.1" 502 559 "http://localhost/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
2019/10/11 00:21:38 [error] 7#7: *2 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/jobs/autosuggest HTTP/1.1", upstream: "http://localhost/jobs/autosuggest", host: "localhost", referrer: "http://localhost/"
10.0.2.2 - - [11/Oct/2019:00:21:38 +0000] "GET /api/jobs/autosuggest HTTP/1.1" 502 559 "http://localhost/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
10.0.2.2 - - [11/Oct/2019:00:21:39 +0000] "GET /api/users?sort=lastName%2Cdesc HTTP/1.1" 502 559 "http://localhost/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
2019/10/11 00:21:39 [error] 7#7: *3 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/users?sort=lastName%2Cdesc HTTP/1.1", upstream: "http://localhost/users?sort=lastName%2Cdesc", host: "localhost", referrer: "http://localhost/"
2019/10/11 00:21:39 [error] 7#7: *4 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/users/autosuggest HTTP/1.1", upstream: "http://localhost/users/autosuggest", host: "localhost", referrer: "http://localhost/"
10.0.2.2 - - [11/Oct/2019:00:21:39 +0000] "GET /api/users/autosuggest HTTP/1.1" 502 559 "http://localhost/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
2019/10/11 00:21:39 [error] 7#7: *2 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/assessments HTTP/1.1", upstream: "http://localhost/assessments", host: "localhost", referrer: "http://localhost/"
10.0.2.2 - - [11/Oct/2019:00:21:39 +0000] "GET /api/assessments HTTP/1.1" 502 559 "http://localhost/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
10.0.2.2 - - [11/Oct/2019:00:21:39 +0000] "GET /2.bundle.js HTTP/1.1" 200 11611 "http://localhost/jobs" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
10.0.2.2 - - [11/Oct/2019:00:21:40 +0000] "GET /21.bundle.js HTTP/1.1" 200 13624 "http://localhost/jobs" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
2019/10/11 00:21:40 [error] 7#7: *4 no live upstreams while connecting to upstream, client: 10.0.2.2, server: localhost, request: "GET /api/jobs?sort=createdDate%2Cdesc HTTP/1.1", upstream: "http://localhost/jobs?sort=createdDate%2Cdesc", host: "localhost", referrer: "http://localhost/jobs"
10.0.2.2 - - [11/Oct/2019:00:21:40 +0000] "GET /api/jobs?sort=createdDate%2Cdesc HTTP/1.1" 502 559 "http://localhost/jobs" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
发布于 2019-10-11 01:20:43
不能使用localhost
引用不同的容器地址。您可以将容器想象成一个单独的机器,显然使用localhost
不会让您连接到邻居或朋友的计算机。当两台机器在同一个网络中时,您可以使用它们对应的网络ips或主机名在它们之间创建通信。
它在码头的工作原理完全一样。如果您想连接到同一网络中的其他容器,则需要使用它的ip (可以通过docker network inspect <NETWORK_NAME>
)或主机名(在本例中是与容器名称相同的主机名)。
所以您的nginx.conf
而不是:
location /api/ {
proxy_pass http://localhost:8081/;
}
应包括:
location /api/ {
proxy_pass http://API_CONTAINER_NAME:8081/;
}
https://stackoverflow.com/questions/58332873
复制相似问题