Como proxy / grafana com nginx?


15

Eu configurei e iniciei o grafana padrão e funciona como esperado em http: // localhost: 3000 . Estou tentando fazer o proxy com o nginx, onde tenho o ssl instalado. Estou tentando fazer com que ele responda a https: // localhost / grafana, mas serve apenas o seguinte:

{{alert.title}}

Eu tenho isso no meu bloco de servidor nginx:

location /grafana {
     proxy_pass         http://localhost:3000;
     proxy_set_header   Host $host;
}

Respostas:


26

Parece que o nginx suporta a reescrita das solicitações para o servidor proxy, portanto, a atualização da configuração para isso fez com que funcionasse:

location /grafana {
     proxy_pass         http://localhost:3000;
     rewrite  ^/grafana/(.*)  /$1 break;
     proxy_set_header   Host $host;
}

Meu grafana.ini também possui uma raiz atualizada:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

Eu posso confirmar que isso funciona. Observe que, devido aos ativos estáticos, a reescrita do nginx e a configuração root_url são necessárias, mas, caso contrário, ele faz o truque com o Grafana 2.2.
Mahn

2
Além disso, se você tiver a autenticação http básica na frente do nginx antes que ele atinja o grafana, substitua o Authorizationcabeçalho incluindo proxy_set_header Authorization "";seu bloco de localização de proxy, caso contrário, o Grafana insistirá em reutilizar essas credenciais para conexões da fonte de dados.
Mahn

A regra de reescrita é essencial para fazê-la funcionar. Isso realmente deve ser adicionado à documentação do Grafana
dasup

@dasup Não, a regra de reescrita não é necessária (pelo menos não na grafana 4.6). Você precisa definir proxy_passpara incluir um URI como /, caso contrário, a solicitação é passada como está (consulte também nginx.com/resources/admin-guide/reverse-proxy para obter a explicação). Portanto, a configuração deve ser proxy_pass http://localhost:3000/;exatamente o que os documentos do grafana indicam.
precisa saber é o seguinte

10

Adicionando à resposta do @ AX-Labs, você não precisa reescrever o URL.

nginx.conf

location /grafana/ {
     proxy_pass         http://localhost:3000/;
     proxy_set_header   Host $host;
}

grafana.ini update root:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

Observe o adicional / no bloco de localização, que faz toda a diferença.

Se você quiser ver o arquivo inteiro, visite https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6, onde eu tenho a configuração de proxy de reverter para o Infludb e também para o grafana.


1
Sim, a diferença é explicada aqui: nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
Observe que a barra final http://localhost:3000/;também é importante.
BITNIK

E em %(protocol)s://%(domain)s:%(http_port)s/grafana/- todos os locais devem ter barra final.
Patricktokeeffe 29/08/19

3

Eu tive o mesmo problema ao usar o nginx e o grafana na janela de encaixe, em dois recipientes diferentes. Foram aprovadas as seguintes opções para docker-compositing no serviço grafana, seguindo http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path :

- GF_SERVER_DOMAIN=foo.bar.com
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:/grafana

Mas não funcionou, e mostras do console do meu navegador: net::ERR_CONTENT_LENGTH_MISMATCH.

Portanto, para corrigi-lo, adicionei a seguinte linha à minha configuração do nginx:

location /grafana/ {
  proxy_pass http://monitoring_grafana:3000/;
  proxy_max_temp_file_size 0; # THIS MADE THE TRICK!
}

0

PARA SUA INFORMAÇÃO:

root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

causa erros de proxy para algumas chamadas de API. Eu acho:

root_url = %(protocol)s://%(domain)s:/grafana
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.