使用Nginx& amp; Artifactory Browsing HTTP SSO太慢了

时间:2016-01-26 01:46:50

标签: http nginx artifactory http-authentication

我已按照此处的说明在Nginx和Artifactory之间设置了反向代理:https://www.jfrog.com/confluence/display/RTF/nginx

我还在Artifactory中启用了HTTP SSO,以便Artifactory认证的用户能够自动登录Artifactory。从这里开始说明:https://www.jfrog.com/confluence/display/RTF/Single+Sign-on

除了Artifactory真的很慢之外,一切都在工作。当我访问网站(例如artifactory.myorg.com/webapp/#/home)时,会出现一个进度轮,它会在每个页面上滚动。

如果我关闭Nginx并使用其嵌入式Tomcat引擎访问Artifactory,那么一切正常。

我能做些什么来解决这个问题吗?

更新 一旦关闭以下设置,浏览就可以了:

proxy_set_header REMOTE_USER $remote_user;

我猜测Artifactory当前正在为每个请求处理此用户设置,也许我需要在Tomcat端或Artifactory设置上执行某些操作来解决此问题。

以下是我的nginx / artifactory配置的外观(它们是由Artifactory 4.4中的反向代理设置页面生成的):

ssl_certificate      /etc/ssl/certs/dummy.crt;
ssl_certificate_key  /etc/ssl/keys/dummy.key;
ssl_session_cache shared:SSL:1m;
ssl_prefer_server_ciphers   on;

server {
    listen 443 ssl;



server_name dummy.net;
if ($http_x_forwarded_proto = '') {
    set $http_x_forwarded_proto  $scheme;
}
## Application specific logs
access_log /var/log/nginx/dummy-access.log;
error_log /var/log/nginx/dummy-error.log;

rewrite ^/$ /artifactory/webapp/ redirect;
rewrite ^/artifactory$ /artifactory/webapp/ redirect;

location /artifactory/ {

auth_pam              "Secure Zone";
auth_pam_service_name "sevice";

proxy_read_timeout  900;
proxy_pass_header   Server;
proxy_cookie_path ~*^/.* /;
proxy_pass         http://127.0.0.1:8081/artifactory/;

proxy_set_header DUMMY_USER $remote_user;
proxy_set_header   X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/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;
}

}

2 个答案:

答案 0 :(得分:1)

是。使用Nginx作为反向代理不应该增加明显的开销,并且如果您使用它来提供静态资产,可以加快体验。

您的测试到目前为止涉及Nginx,因此发布相关的Nginx配置会很有帮助。

但是我会在没看到它的情况下做出猜测。您可能正在使用Nginx中的proxy_passArtifactory发送请求。如果Artifactory与Nginx位于同一主机上,则proxy_pass地址应为127.0.0.1上的端口。如果您在那里包含域名,那么您的流量可能会像从Nginx路由回负载均衡器,通过CloudFlare或其他一些低效路由。

答案 1 :(得分:0)

在尝试重现您的场景后,建议尝试再尝试一次以解决问题。 尝试在REMOTE_USER值中设置修复用户名,而不是变量。

proxy_set_header REMOTE_USER username;

顺便说一下,从代码片段看,标题名称是DUMMY_USER,在示例中您指定了REMOTE_USER。确保标题名称与Admin>下的Artifactory中配置的标题名称相同安全| HTTP-SSO。

如果此问题仍然存在,请联系support@jfrog.com。