NGINX加载DOM,但返回502的图像和资产

我正在创build一个自定义的50x.html页面,但似乎无法从我的usr/share/nginx/html目录加载资源。 我认为问题在于我的应用程序的反向代理的上游设置。 我如何才能摆脱upstream: "http://127.0.0.1:1234"只有当从usr/share/nginx/html服务我的nginx静态文件(即当反向代理服务器closures时),但在所有其他设置使用上游(比如我的configuration是如何设置的)?

Nginx错误日志:

2016/07/22 16:10:06 [error] 24000#0: *94 connect() failed (111: Connection refused) while connecting to upstream, client: <<client-ip-here>>, server: foo.com, request: "GET /img-1024.png HTTP/1.1", upstream: "http://127.0.0.1:1234/img-1024.png", host: "foo.com", referrer: "https://foo.com/logo.png"

nginx.conf:

 upstream api { server 127.0.0.1:1234; } ... error_page 501 502 503 /500.html; location = /500.html { root /usr/share/nginx/html; } ... 

我试过使用try_files: try_files $uri $uri/或在一些变化无济于事。

谢谢

一种方法是在前端提供静态文件,如果不存在则只提供代理。 您可以在此服务器上部署错误页面和资源。 避免前端和后端之间的目录冲突。

例如:

 root /usr/share/nginx/html; location / { try_files $uri @proxy; } location @proxy { proxy_pass http://api; } 

详情请参阅此文件 。

你是对的 – nginx无法区分对正常请求的错误页面资产的请求。

您应该更改资产以使用可以进行位置匹配的唯一path(可能类似于/500/logo.png ),或者使用外部服务托pipe资产(S3等),并从那里。

对于位置匹配,它可能看起来像

 location /500 { root /usr/share/nginx/html; }