同一位置的NGINX位置指令
我有一个Nexus Repository Manager OSS 3.0作为私有docker注册表在NGINX后面运行。我的Docker客户端(不是正式的Docker客户端)希望从同一位置的NGINX位置指令,nginx,nexus,nginx-location,Nginx,Nexus,Nginx Location,我有一个Nexus Repository Manager OSS 3.0作为私有docker注册表在NGINX后面运行。我的Docker客户端(不是正式的Docker客户端)希望从/v2/返回200OK和空JSON字符串{}。我遇到的问题是,Nexus返回的200OK是一个空字符串 我的解决办法是让NGINX为/v2/请求和代理/v2/*请求返回一个包含空JSON字符串的文件到Nexus server { listen 443 ssl; server_name
/v2/
返回200OK
和空JSON字符串{}
。我遇到的问题是,Nexus返回的200OK
是一个空字符串
我的解决办法是让NGINX为/v2/
请求和代理/v2/*
请求返回一个包含空JSON字符串的文件到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/\u目录,/v2/myimage/manifests/latest
,等等)定向到代理传递。我如何才能使/v2/
请求到达断开empty.json
文件的位置?因此您已经在/home/ubuntu/www/v2/empty.json
上放置了一个文件
问题是index
指令将URI重写为/v2/empty.json
,然后由位置/v2/
块处理
一种解决方案是创建另一个位置以匹配重写的URI,并将其作为静态文件:
root /home/ubuntu/www;
location = /v2/ {
index empty.json;
}
location = /v2/empty.json {
}
另一种解决方案是使用error\u页面
指令。但是您仍然需要指定位置
和根目录
来处理静态文件:
谢谢你,这很有道理!我同意你提出的第一个解决方案,效果很好。
location = /v2/ {
return 405;
error_page 405 =200 /static/empty.json;
}
location / {
root /home/ubuntu/www;
}