【发布时间】:2020-02-08 11:41:00
【问题描述】:
我正在尝试使用官方 nginx docker 镜像 (https://hub.docker.com/_/nginx) 来提供静态内容并将反向代理到另一个 docker 容器中的 api Web 服务器。它们都是由 docker-compose 调用启动的,因此它们应该属于同一个网络。
当我查看日志时,我看到了这样的错误,即 nginx 无法与上游服务器通信。我担心的是我看到http://localhost/users?sort=lastName%2Cdesc,看起来它不尊重上游的端口设置,这当然会失败。我不知道应该进行什么配置才能使其匹配。我读过的所有指南都有 uri 声明和上游 url 声明的某种组合,带有或不带有斜杠,但没有一个能满足我的需要。
[错误] 7#7:*3 连接到上游时没有实时上游,客户端:10.0.2.2,服务器:localhost,请求:“GET /api/users?sort=lastName%2Cdesc HTTP/1.1”,上游:“http://localhost/users?sort=lastName%2Cdesc”,主机:“localhost”,推荐人:“http://localhost/”
Docker 的东西
API 在 8081
客户端在 8080
客户端应将 /api/* 的任何内容转发到 8081 docker 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" "-"
【问题讨论】: