nginx changes the hostname of proxy_pass into ip address unwantedly

willchu@gmail.com nginx-forum at nginx.us
Wed Dec 2 01:42:43 UTC 2015


I have configured nginx to use mod_zip to zip up multiple files.

I also have configured nginx so that it proxies to s3 when our server gets a
request to /images.

location /p/ {
    proxy_pass http://bucket-name.s3.amazonaws.com;
}
When I access a file via < server >/images/foo.png, everything works great.

However, when I try using mod_zip, the http://bucket-name.s3.amazonaws.com
gets rewritten to an ip address

http://54.231.176.194:80/foo.png

S3 needs the bucket-name in the url and gives me a NoSuchBucket error when I
try using the ip address

I get the following error

2015/12/01 01:37:08 [error] 14955#0: *16 mod_zip: a subrequest returned 400,
aborting... while reading response header from upstream, client:
172.31.10.100, server: convoygarage.com, request: "GET /api/get_zipfile
HTTP/1.1", subrequest: "/p/foo.png", upstream: "http://
54.231.176.194:80/foo.png", host: "convoygarage.com"

Why is nginx or mod_zip rewriting the hostname portion of my s3 URL into an
ip address?

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,263199,263199#msg-263199



More information about the nginx mailing list