我正在尝试在 NGINX 反向代理后面设置 Artifactory (CPP-CE),并使用自定义上下文。即所有 Artifactory URL 都应位于某个顶级上下文 (例如/conan
) 后面。因此,UI URL 应该位于https://server.com/conan/ui
,而存储库端点位于 后面https://server.com/conan/artifactory
。
我似乎找不到办法告诉 Artifactory 这一点。老实说,文档并不是特别有用。
我尝试设置X-Artifactory-Override-Base-Url
为$http_x_forwarded_proto://$host:$server_port/conan/artifactory
或,但没有效果。在将请求传递给 Artifactory 时,$http_x_forwarded_proto://$host:$server_port/conan/
请求 URL 被重写以删除部分。/conan
尽管如此,尝试从浏览器访问https://server.com/conan/ui
会吐出一个带有引用的 HTML,/ui/...
并且访问https://server.com/conan/artifactory
会返回一个重定向到/ui
(完全忽略在中指定的任何上下文部分X-Artifactory-Override-Base-Url
)
这样设置是否可行?我需要更改 Artifactory 内部的某些配置才能完成此操作吗?我看到有一个通过 API 提供的反向代理配置,但文档没有解释它到底是做什么的,据我所知,它只是生成反向代理块。
整个 NGINX 位置配置如下:
location /conan {
proxy_read_timeout 2400s;
proxy_pass_header Server;
proxy_cookie_path /conan/ /;
rewrite ^/conan/(.*) /$1 break;
proxy_pass http://localhost:9082;
proxy_next_upstream error timeout non_idempotent;
proxy_next_upstream_tries 1;
proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/conan/artifactory;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}