无法在Nginx反向代理后面的SonarQube上更新或保存设置

时间:2019-06-19 14:37:06

标签: docker nginx sonarqube reverse-proxy

我在docker中都有一个sonarqube和nginx的实例。 Sonarqube在nginx后面,并且工作正常,但是我可以访问它,但是我无法在sonarqube UI中更新任何内容,例如在Marketplace中安装插件。 当我按下安装或更新我的帐户详细信息时,它会显示:

enter image description here

在进行Ajax调用时似乎无法传递cookie和认证令牌。在插件市场上按安装按钮时,它将对以下内容进行POST调用:http://localhost:8089/sonarqube/api/plugins/install

我在Nginx配置中错过了任何东西吗?

worker_processes 1;

events { worker_connections 1024; }

http {
    sendfile on;
      server {
        location /sonarqube {
            proxy_pass         http://sonarqube:9000;
            proxy_read_timeout  90s;
            proxy_redirect     http://sonarqube:9000 http://localhost:8089;
       }
    }
}
version: "3.5"
services:
  nginx:
    build:
      context: .
      dockerfile: Dockerfile.nginx
    ports:
      - "8089:8080"
    networks:
      - sonarnet
  sonarqube:
    build:
       context: .
       dockerfile: Dockerfile.sonarqube
    expose:
      - "9000"
    networks:
      - sonarnet
    environment:
    - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
    - SONARQUBE_JDBC_USERNAME=sonar
    - SONARQUBE_JDBC_PASSWORD=sonar
    - sonar.forceAuthentication=true
    - sonar.web.context=/sonarqube

    ########### The following line fixed the problem:###########
    - sonar.core.serverBaseUrl = localhost:8089/sonarqube
    ############################################################

    volumes:
    - sonarqubeConf:/opt/sonarqube/conf
    - sonarqubeLogs:/opt/sonarqube/logs
  db:
    image: postgres
    networks:
     - sonarnet
    environment:
    - POSTGRES_USER=sonar
    - POSTGRES_PASSWORD=sonar
    volumes:
    - postgresql:/var/lib/postgresql
    - postgresqlData:/var/lib/postgresql/data
 networks:
  sonarnet:
   driver: bridge
......

花了一整天后,我找到了解决方案。由于声纳位于反向代理之后并且可以通过localhost:8089 / sonarqube访问,因此我们还需要指定sonar.core.serverBaseUrl。因此,添加以下env变量即可解决问题:-sonar.core.serverBaseUrl = localhost:8089 / sonarqube

0 个答案:

没有答案