У меня есть диспетчер репозитория Nexus OSS 3.0, работающий позади NGINX как приватный реестр докеров. Мой клиент Docker (а не официальный клиент-докер) ожидает 200 OK
и пустую строку JSON {}
для возврата от /v2/
. Проблема, с которой я сталкиваюсь, заключается в том, что Nexus возвращает 200 OK
, но пустую строку.Директивы местоположения NGINX для того же места
Мой рабочий процесс должен содержать NGINX файл, содержащий пустую строку JSON для /v2/
запросов и прокси /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
?
Спасибо, что делает все чувства в мире! Я пошел с первым предложенным вами решением, и он отлично работает. –