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;
}
AX Labs
fonte

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
AX Labs
fonte
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.

Adarsha
fonte
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!
}
boris quiroz
fonte
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
JasonfromDR
fonte