反向代理设置
若要配置反向代理,请在政府模块,选择Artifactory|HTTP的设置.
添加您的设置,保存并单击下载
生成反向代理代码片段。将配置文件放在反向代理服务器安装下的正确位置,并重新加载配置。
使用NGINX ?注意这些要求。
要使用NGINX作为反向代理来与Docker一起工作,你需要NGINX v1.3.9或更高版本。NGINX配置文件应该放在sites-enabled
目录中。
详情请参阅配置NGINX.
使用Apache吗?注意这些要求。
Apache配置中的某些特性仅在Apache HTTP Server v2.4中得到支持。
要使用Apache作为反向代理服务器,请确保安装并激活了以下模块:
proxy_http
重写
缩小
头
proxy_balancer
proxy_connect
proxy_html
ssl
lbmethod_byrequests
slotmem_shm
代理
最佳实践
使用反向代理时,建议传递X-JFrog-Override-Base-Url
标题如下:
NGINX的:
proxy_set_header x - jfrog - overrides - base - url $http_x_forwarded_proto://$<主机>:<服务器端口>
Apache:重写%{REQUEST_SCHEME} (.*)
RewriteRule (.*) - [E=my_scheme:%1]
[…]
RequestHeader set X-JFrog-Override-Base-Url %{my_scheme}://
服务器提供商 |
设置服务器提供商类型:嵌入式Tomcat、Nginx和Apache。 |
内部主机名 |
Artifactory的内部服务器名,web服务器将使用它来访问Artifactory机器。 如果web服务器安装在与Artifactory相同的机器上,您可以使用localhost,否则使用IP或主机名。 |
Artifactory内部端口 |
直接访问Artifactory的REST API和下载.可以从Artifactory系统YAML文件。 |
内部路由器端口 |
查阅JFrog平台服务REST API和web UI。可以从Artifactory系统YAML文件。 |
公共服务器名称 |
将在组织内公开用于访问Artifactory的服务器名。 |
使用HTTP |
设置后,Artifactory将可以通过设置的相应端口上的HTTP访问。 |
使用HTTPS |
设置后,Artifactory将通过设置的相应端口上的HTTPS访问。 |
HTTP端口 |
通过HTTP访问的端口。默认值为80。 |
HTTPS端口 |
通过HTTPS访问的端口。默认值为443。 |
在高可用性设置中使用负载均衡器
当在高可用性(HA)设置中配置Artifactory时,Artifactory将自动调整提供的设置,在HTTP设置中包括负载平衡部分,允许代理多个Artifactory实例。
Docker反向代理设置
当使用Artifactory作为本地私有Docker注册表时,Docker客户端可以通过反向代理或直接通过Artifactory的嵌入式Tomcat访问Artifactory。
JFrog Artifactory云Docker注册表
请注意,访问JFrog Artifactory Cloud安装上的Artifactory Docker注册表不使用反向代理,因为它是组织外部的。
使用反向代理
Docker客户端可以通过反向代理访问Artifactory子域法(推荐)或通过端口的方法.
对于这些方法中的每一种,您的Docker存储库必须配置相应的反向代理设置Docker存储库配置先进的选项卡.的反向代理配置屏幕还设置Docker Repository配置.
将Artifactory配置为Docker注册表
本节介绍如何根据使用子域方法还是端口绑定来获取反向代理配置。
使用子域名
如果您选择子域名随着反向代理法,在配置Docker Repository时,使用注册的名字在Docker存储库配置先进的选项卡将自动设置为所需的值,并将使用库的关键随着子域名.
通配符证书
使用子域名方法需要通配符证书等。*。myservername.org
.您还需要确保您使用的证书支持子域中使用的级别数量。
HTTP设置中的Docker设置 | Docker Repository高级配置中的相应HTTP设置 |
---|---|
|
|
使用端口绑定
如果您选择港口随着反向代理法,当配置Docker Repository时,您将需要设置注册中心港口在Docker存储库配置先进的选项卡。连同公共服务器名称,这是Docker客户端将用于从存储库中提取图像和将图像推入存储库的端口。请注意,为了使所有Docker存储库都包含在反向代理配置中,首先需要为系统中定义的每个Docker存储库设置端口,然后才生成反向代理配置。还要注意,每个存储库必须绑定到唯一的端口
最佳实践
我们建议创建一个虚拟Docker存储库它聚合了你所有其他的Docker存储库,并使用它来拉和推图像。这样你只需要为虚拟存储库设置NGINX配置。
HTTP设置中的Docker设置 | Docker Repository高级配置中的相应HTTP设置 |
---|---|
|
|
使用直接存取
访问Docker存储库没有反向代理,在“HTTP设置”界面的“Docker设置面板”中,选择“Docker访问方法”为“Repository Path”。
HTTP设置中的Docker设置 | Docker Repository高级配置中的相应HTTP设置 |
---|---|
|
|
配置反向代理支持mTLS
从Artifactory 7.38.4版开始,您还可以使用mtl.要做到这一点,需要一个反向代理,并在前端反向代理(Nginx)上进行一些设置。
云客户的反向代理
要在云中配置反向代理以支持mTLS,您需要联系JFrog support来为您设置。
为自托管客户配置Nginx代理
要配置Nginx代理,您需要在Nginx配置文件,并通过system.yaml
文件。看到配置Nginx获取详细信息。
- 通过提供JFrog平台信任的可信证书来设置mTLS。受信任的证书可以是要信任的实际客户端证书,也可以是要信任由它签名的任何证书的CA证书(首选)。
- 然后,使用客户端证书向JFrog平台验证API请求(来自不受信任的客户端证书的请求将被阻止)。
您可以通过撤销(删除)所提供的受信任证书来撤销证书。您也可以通过OCSP协议撤销特定的客户端证书,而不需要撤销受信任的CA证书。
您将能够通过撤销(删除)所提供的受信任证书。您也可以撤销特定的客户端证书,而不需要撤销受信任的CA证书。
在反向代理上设置mTLS验证和证书终止
设置mTLS要求您首先在反向代理上设置mTLS验证和证书终止。例如,使用Nginx应该包括这样的内容:
ssl_verify_client可选的;ssl_verify_depth 2;ssl_client_certificate /路径/ / client-ca.crt;...proxy_set_header X-JFrog-Client-Cert "";proxy_set_header - jfrog - client - cert $ssl_client_escaped_cert;
的client-ca.crt
上面是一个包含所有受信任客户端CA证书的单个文件示例。
反向代理应该负责(通过配置):
- 总是从所有传入的请求中删除自定义标头,以防止恶意用户自行添加此类报头,欺骗平台接受该报头作为身份验证和授权机制
- 添加对于请求自定义标题使用客户端证书仅用于成功通过mtls验证的请求
设置反向代理后,当使用mTLS执行请求时,验证成功后,反向代理必须添加一个带有PEM格式的客户端证书的自定义头(请参阅proxy_set_header X-JFrog-Client-Cert
在上面的代码示例中)。
注意,您还可以设置您的自定义头文件而不是X-JFrog-Client-Cert
.方法设置相同的标头头名称在system.yaml
文件(见下面的配置示例),以便JFrog平台使用相同的头文件。
支持用户身份提取请求授权
您将能够使用您的客户端证书在JFrog平台中验证和授权请求,而不需要发送额外的凭据,只要客户端证书嵌入了用户身份。
要启用基于用户的客户端mTLS身份验证,您可以让您的证书包含用户名,JFrog平台将只允许访问该用户具有权限的资源。2022世界杯阿根廷预选赛赛程
例如,证书的主题可能是这样的主题:C=IL, L=内坦亚,O=马尔丁,OU=DO, CN=myuser@www.si-fil.com,以及在哪里你的用户名是“myuser”从主题的CN。在这种情况下,您可以设置system.yamlregexp
看起来像这样:
security: authentication: mtls: #启用相互tls身份验证配置:true #如果为true则启用mtls extract -regex: [^@]+(?=\d{0,}@) #用于从证书的主题CN中提取用户名的正则表达式
您还可以将正则表达式设置为您需要的任何形式,以便从主题的CN属性解析JFrog平台中定义的用户名。
反向代理支持mTLS流
- 客户端向JFrog平台发送请求。
- 如果该请求包含一个客户端证书:
- JFrog平台将使用配置的受信任证书验证客户端证书,并验证证书是否已被吊销。如果客户端证书认证成功,该程序将继续进行;否则就会被阻塞.
JFrog平台将尝试从客户端证书中提取用户身份。
如果成功提取了用户标识,则该过程将继续;否则,它将退回到依赖额外的用户身份验证信息(例如,基本凭据、记名令牌)。如果JFrog平台被配置为需要客户端证书,那么请求将被阻止;否则,它将继续使用现有的授权机制,没有mTLS。
REST API
Artifactory还支持通过REST API使用以下端点管理反向代理配置:
获取反向代理配置 |
检索反向代理配置JSON。 |
更新反向代理配置 |
更新反向代理配置。 |
获取反向代理代码片段 |
获取文本格式的反向代理配置片段。 |