NGINX反向代理重写SAML回调

t40tm48m  于 2023-01-12  发布在  Nginx
关注(0)|答案(3)|浏览(260)

SonarQube安装在Windows系统上,运行在http://localhost/9000上。
我正在设置NGINX作为反向代理,并在https://localip.com上提供服务。
尝试连接SonarQube时,我收到以下EE
您未被授权访问此页面。请与管理员联系。原因:响应是在http://localhost:9000/oauth2/callback/saml而不是https://localip.com/oauth2/callback/saml上收到的
我想我需要指示NGINX重写回调,我该怎么做?

sr4lhrrt

sr4lhrrt1#

只需转到https://{sonarqube_domain}/admin/settings并确保将Server base URL设置为https://{sonarqube_domain}

3htmauhk

3htmauhk2#

我遇到了同样问题,但我运行的是Apache服务器,代理配置如下:

## Proxy rules
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
  RequestHeader set X-Forwarded-Proto "https"
  RequestHeader set X-Forwarded-Port "443"

解决问题的是补充:

RequestHeader set X-Forwarded-Proto "https"
  RequestHeader set X-Forwarded-Port "443"
tct7dpnv

tct7dpnv3#

您没有显示示例配置,但我最近在nginx反向代理w/SAML后面设置SonarQube 9时遇到了与您相同的问题。
您未被授权访问此页面。请与管理员联系。原因:响应是在http://localhost:9000/oauth2/callback/saml而不是https://localip.com/oauth2/callback/saml上收到的
最有可能的解决方法是在nginx代理配置中的server proxypass部分添加以下两行:

proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;

Sonarsource为IIS反向代理提供了a post about this,其中指示了两个重要事项:

  1. HTTP_X_FORWARDED_PROTO设置为https
    1.保留主机标头
    上面代码片段中的行按顺序处理#1和#2的NGINX等价物。
    他们的Operating the Server页面也提供了以下示例配置:
# the server directive is Nginx's virtual host directive
server { 
 # port to listen on. Can also be set to an IP:PORT 
 listen 443 ssl;
 ssl_certificate ${path_to_your_certificate_file}
 ssl_certificate_key ${path_to_your_certificate_key_file}
 location / {
   proxy_pass ${address_of_your_sonarqube_instance_behind_proxy}
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header X-Forwarded-Proto https;
 }
}

根据您的错误消息,proxy_pass行很可能类似于proxy_pass http://localhost:9000,我也是这样设置的。

相关问题