Не удается обновить или сохранить настройки на SonarQube за обратным прокси-сервером Nginx - PullRequest
1 голос
/ 19 июня 2019

У меня есть экземпляр sonarqube и nginx в докере.Sonarqube находится за nginx, и он работает нормально, я могу получить к нему доступ, НО я не могу ничего обновить в пользовательском интерфейсе sonarqube, например, установить плагины в Marketplace.Когда я нажимаю установить или обновить данные своей учетной записи, он говорит:

enter image description here

Похоже, что он не передает куки и токен аутентификации при выполнении вызовов Ajax.При нажатии кнопки «Установить» на плагине Marketplace он вызывает 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
......

После того, как вы потратилицелый день я нашел решение.Поскольку sonar находится за обратным прокси-сервером и доступен как localhost: 8089 / sonarqube, нам также нужно указать sonar.core.serverBaseUrl.Поэтому добавление следующей переменной env решило проблему: - sonar.core.serverBaseUrl = localhost: 8089 / sonarqube

...