nginx로 / grafana를 프록시하는 방법은 무엇입니까?


15

기본 grafana를 설정하고 시작했으며 http : // localhost : 3000 에서 예상대로 작동합니다 . ssl이 설치된 nginx로 프록시하려고합니다. https : // localhost / grafana에 응답하려고 하지만 다음을 제공합니다.

{{alert.title}}

내 nginx 서버 블록 에이 기능이 있습니다.

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

답변:


27

nginx는 프록시 서버에 요청을 다시 쓰는 것을 지원하므로 구성을 다음과 같이 업데이트하면 작동합니다.

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

내 grafana.ini에도 업데이트 된 루트가 있습니다.

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

이것이 작동하는지 확인할 수 있습니다. 정적 자산으로 인해 nginx 다시 쓰기 및 root_url 구성이 모두 필요하지만 그렇지 않으면 Grafana 2.2를 사용하여 트릭을 수행합니다.
Mahn

2
또한 grafana에 도달하기 전에 nginx 앞에 기본 http 인증이있는 경우 프록시 위치 블록 Authorization에 포함 하여 헤더 를 재정의해야합니다 proxy_set_header Authorization "";. 그렇지 않으면 Grafana는 이러한 자격 증명을 데이터 소스 연결에 재사용해야합니다.
Mahn

다시 쓰기 규칙은 작동시키기 위해 필수적입니다. 이것은 정말로에서 Grafana 문서에 추가되어야합니다 docs.grafana.org/installation/behind_proxy
dasup

@dasup 아니요, 다시 쓰기 규칙이 필요하지 않습니다 (적어도 grafana 4.6에서는 필요하지 않음). proxy_pass와 같은 URI를 포함 하도록 설정해야합니다 /. 그렇지 않으면 요청이있는 그대로 전달됩니다 ( 설명 은 nginx.com/resources/admin-guide/reverse-proxy 참조 ). 따라서 설정은 proxy_pass http://localhost:3000/;grafana docs의 상태와 정확히 일치해야합니다.
ChrisWue

10

@ AXE-Labs 답변에 추가하면 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/

위치 블록에서 추가 /를 보면 모든 차이가 있습니다.

전체 파일을 보려면 https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6 를 방문 하십시오. 여기서 Infludb 및 grafana에 대한 프록시 설정을 리버브했습니다.


1
예, 차이점은 여기에 설명되어 있습니다 : nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
후행 슬래시 http://localhost:3000/;도 중요합니다.
bitnik

그리고 %(protocol)s://%(domain)s:%(http_port)s/grafana/-모든 위치에는 슬래시가 있어야합니다.
patricktokeeffe

3

도커에서 두 개의 다른 컨테이너에서 nginx와 grafana를 사용할 때도 같은 문제가 발생했습니다. http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path 다음에 따라 grafana 서비스에서 docker-compose에 다음 옵션을 전달했습니다 .

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

그러나 작동하지 않으며 브라우저의 콘솔에 다음이 표시 net::ERR_CONTENT_LENGTH_MISMATCH됩니다.

그래서 문제를 해결하기 위해 nginx 설정에 다음 줄을 추가했습니다.

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

0

참고 사항 :

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

일부 API 호출에 프록시 오류가 발생합니다. 나는 찾는다 :

root_url = %(protocol)s://%(domain)s:/grafana
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.