反向代理设置
配置反向代理,在政府模块,选择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-Override-Base-Url $http_x_forwarded_proto://$<主机>:<服务器端口>
Apache:rewritecsecond %{REQUEST_SCHEME} (.*)
rewriterrule (.*) - [E=my_scheme:%1]
[…]
RequestHeader set x - jfrog - overrides - base - url %{my_scheme}://
服务器提供商 |
设置服务器提供商类型:嵌入式Tomcat、Nginx和Apache。 |
内部主机名 |
Artifactory的内部服务器名称,web服务器将使用它来访问Artifactory机器。 如果web服务器与Artifactory安装在同一台机器上,则可以使用localhost,否则使用IP或主机名。 |
工厂内部端口 |
直接访问Artifactory的REST API和下载。可以从人工系统YAML文件。 |
路由器内部端口 |
进入JFrog平台服务REST API和web UI。可以从人工系统YAML文件。 |
公共服务器名称 |
服务器名称,该名称将公开用于访问组织内的Artifactory。 |
使用HTTP |
设置后,Artifactory将通过HTTP在设置的相应端口上访问。 |
使用HTTPS |
设置后,Artifactory将在设置的相应端口上通过HTTPS访问。 |
HTTP端口 |
通过HTTP访问的端口。缺省值为80。 |
HTTPS端口 |
通过HTTPS访问的端口。默认值为443。 |
在高可用性设置中使用负载均衡器
在高可用性(HA)设置中配置Artifactory时,Artifactory将自动调整提供的设置,以便在HTTP设置中包含Load Balancing部分,从而允许代理多个Artifactory实例。
Docker反向代理设置
当使用Artifactory作为本地私有Docker注册表时,Docker客户端可以通过反向代理或直接通过Artifactory的嵌入式Tomcat访问Artifactory。
JFrog人工云码头注册表
请注意,访问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设置面板中选择Repository Path作为Docker访问方法。
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 ";$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=Netanya, O=Maldin, OU=DO, CN=myuser@www.si-fil.com,后面的用户名是主题CN中的“myuser”。在这种情况下,您可以设置访问YAML配置看起来像这样:
security: authentication: mtls: # Mutual-TLS认证配置启用:true #如果为true则启用mtls extract -regex: [^@]+(?=\d{0,}@) #用于从证书的主题CN中提取用户名的正则表达式
您还可以将正则表达式设置为所需的任何内容,以便解析在JFrog平台中根据主题的CN属性定义的用户名。
反向代理支持mTLS流
- 客户端向JFrog平台发送请求。
- 如果请求包含一个客户端证书:
- JFrog平台将使用配置的可信证书对客户端证书进行身份验证,并验证证书是否未被撤销。如果客户端证书认证成功,程序将继续;否则就会被阻塞。
然后,JFrog平台将尝试从客户端证书中提取用户标识。
如果用户标识被成功提取,则该过程将继续;否则,它将退回到依赖额外的用户身份验证信息(例如,基本凭据、承载令牌)。如果JFrog平台被配置为需要客户端证书,那么请求将被阻止;否则,它将继续使用没有mTLS的现有授权机制。
REST API
Artifactory还支持使用以下端点通过REST API管理反向代理配置: