云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

在许多情况下,组织可以通过反向代理提供对Artifactory的访问,例如NGINXApache.在某些情况下,例如Artifactory作为Docker注册表在美国,这种设置甚至是强制性的。为了简化反向代理的配置,Artifactory提供了一个反向代理配置生成器屏幕,您可以在其中填写一组字段以生成所需的配置片段,然后您可以下载并直接安装到反向代理服务器的相应目录中。你也可以使用REST API管理反向代理配置。

为了最好的安全性,使用时Artifactory背后的反向代理,它必须与web服务器和Artifactory位于同一台机器上应该显式且独占地绑定到代理主机。

W也建议你设置你的自定义基地URL为了匹配你的公共服务器名称

页面内容


反向代理设置

若要配置反向代理,请在政府模块,选择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获取详细信息。

  1. 通过提供JFrog平台信任的可信证书来设置mTLS。受信任的证书可以是要信任的实际客户端证书,也可以是要信任由它签名的任何证书的CA证书(首选)。
  2. 然后,使用客户端证书向JFrog平台验证API请求(来自不受信任的客户端证书的请求将被阻止)。
  3. 您可以通过撤销(删除)所提供的受信任证书来撤销证书。您也可以通过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流

  1. 客户端向JFrog平台发送请求。
  2. 如果该请求包含一个客户端证书:
    1. JFrog平台将使用配置的受信任证书验证客户端证书,并验证证书是否已被吊销。如果客户端证书认证成功,该程序将继续进行;否则就会被阻塞
    2. JFrog平台将尝试从客户端证书中提取用户身份。
      如果成功提取了用户标识,则该过程将继续;否则,它将退回到依赖额外的用户身份验证信息(例如,基本凭据、记名令牌)。

      如果JFrog平台被配置为需要客户端证书,那么请求将被阻止;否则,它将继续使用现有的授权机制,没有mTLS。


REST API

Artifactory还支持通过REST API使用以下端点管理反向代理配置:

获取反向代理配置
检索反向代理配置JSON。
更新反向代理配置
更新反向代理配置。
获取反向代理代码片段
获取文本格式的反向代理配置片段。
版权所有©2022 JFrog Ltd.