【发布时间】:2016-08-13 04:54:26
【问题描述】:
我有一个 Nexus Repository Manager OSS 3.0 作为私有 Docker 注册表在 NGINX 后面运行。我的 Docker 客户端(不是官方的 docker 客户端)期望从 /v2/ 返回一个 200 OK 和一个空的 JSON 字符串 {}。我遇到的问题是 Nexus 返回 200 OK 但一个空字符串。
我的解决方法是让 NGINX 为 /v2/ 请求返回一个包含空 JSON 字符串的文件,并将 /v2/* 请求代理到 Nexus。
server {
listen 443 ssl;
server_name nexus.example.com;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
location = /v2/ {
root /home/ubuntu/www;
index empty.json;
}
location /v2/ {
proxy_pass http://localhost:5000;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
我希望这可以工作,但它将所有流量(/v2/, /v2/_catalog, /v2/myimage/manifests/latest 等)引导到 proxy_pass。如何使/v2/ 请求转到该位置以切断empty.json 文件?
【问题讨论】:
标签: nginx nexus nginx-location