apache - 如何在新的访问 Web 应用程序中使用反向代理后面的 Artifactory?

标签 apache tomcat reverse-proxy artifactory

将 Artifactory 升级到版本 >5.4.0 后,我无法在反向代理后面运行它,因为从该版本开始,Artifactory 使用额外的 Web 应用程序 (access.war) 来获取访问 token 。

Apache 配置为反向代理,并使用 AJP 作为协议(protocol)连接到 Artifactory 的 Tomcat。端口 8081 上的 http 连接器被注释掉,因为我只想使用 AJP。

启动 Artifactory 时,它会尝试通过 http: 连接到 Access 服务

Using Access Server URL: http://localhost:8081/access (bundled) source: detected

禁用 http 连接器时出现以下错误消息:

Application could not be initialized: Could not detect listening port.
Caused by: java.lang.IllegalStateException: Could not detect listening port.
at org.artifactory.security.access.ArtifactoryAccessClientConfigStore.detectBundledAccessServerUrl(ArtifactoryAccessClientConfigStore.java:501) ~[artifactory-core-5.5.1.jar:na]
at org.artifactory.security.access.ArtifactoryAccessClientConfigStore.lambda$4(ArtifactoryAccessClientConfigStore.java:476) ~[artifactory-core-5.5.1.jar:na]
at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282) ~[guava-18.0.jar:na]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) ~[guava-18.0.jar:na]
... 30 common frames omitted

服务器.xml

<Service name="Catalina">
    <!--Connector port="8081"/-->

    <!-- This is the optional AJP connector -->
    <Connector port="8019" protocol="AJP/1.3" maxThreads="500" minSpareThreads="20" enableLookups="false" backlog="100"/>

    <Engine name="Catalina" defaultHost="localhost">
        <Host name="localhost" appBase="webapps" startStopThreads="2"/>
    </Engine>
</Service>

如何更改客户端的访问服务器 URL?

最佳答案

基本上你的配置应该是这样的:(给出或接受)

ProxyPreserveHost On

ServerName localhost
ServerAlias *.localhost
ServerAdmin server@admin


## Application specific logs
## ErrorLog ${APACHE_LOG_DIR}/localhost-error.log
## CustomLog ${APACHE_LOG_DIR}/localhost-access.log combined

AllowEncodedSlashes On
RewriteEngine on

RewriteCond %{SERVER_PORT} (.*)
RewriteRule (.*) - [E=my_server_port:%1]
##  NOTE: The 'REQUEST_SCHEME' Header is supported only from apache version 2.4 and above
RewriteCond %{REQUEST_SCHEME} (.*)
RewriteRule (.*) - [E=my_scheme:%1]

RewriteCond %{HTTP_HOST} (.*)
RewriteRule (.*) - [E=my_custom_host:%1]



RewriteRule ^/$                /artifactory/webapp/ [R,L]
RewriteRule ^/artifactory(/)?$      /artifactory/webapp/ [R,L]
RewriteRule ^/artifactory/webapp$   /artifactory/webapp/ [R,L]

RequestHeader set Host %{my_custom_host}e
RequestHeader set X-Forwarded-Port %{my_server_port}e
## NOTE: {my_scheme} requires a module which is supported only from apache version 2.4 and above
RequestHeader set X-Forwarded-Proto %{my_scheme}e
RequestHeader set X-Artifactory-Override-Base-Url %{my_scheme}e://localhost:%{my_server_port}e/artifactory
ProxyPassReverseCookiePath /artifactory /artifactory

ProxyRequests off
ProxyPreserveHost on
ProxyPass /artifactory/ http://localhost:8081/artifactory/
ProxyPassReverse /artifactory/ http://localhost:8081/artifactory/

关于apache - 如何在新的访问 Web 应用程序中使用反向代理后面的 Artifactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46496888/

相关文章:

apache - Vim:Sudo Edit 破坏 Apache 语法突出显示

php - UTF-8贯穿始终

java - Tomcat7安全样本如何调用login.jsp?

mysql - 构建失败 : unable to find ojdbc . jar 文件

caching - Varnish 和 ESI : Fetching in parallel and possible workarounds

Webpack 代理到代理

apache - Tomcat 8 URL 重写问题

Apache 速度 + Tomcat : Manually process templates within web-app

php - 在 cloud9 环境中运行自定义网络服务器并从外部世界访问它

apache - 如何使 XAMPP(Apache;查找)在 Windows 7 上更快?