Sử dụng Nginx làm Proxy ngược để truy cập Grafana ở mọi nơi
Chòm sao:
Máy chủ A là một máy chủ không có Internet (tức là Máy chủ chuyên dụng, NAS, v.v.)
máy chủ B là một máy chủ với Internet VÀ truy cập vào mạng LAN (Thẻ Ethernet thứ hai tức là)
Trong trường hợp này, bản thân tôi giả định rằng Cả hai máy chủ đều nằm trên cùng một mạng LAN hoặc được Chủ sở hữu hoặc Quy tắc tường lửa cho phép làm điều đó :-)
Bắt đầu trên Máy chủ A
Chúng ta phải xác minh điểm,
- nếu graphana lắng nghe cổng mặc định của nó trên 3000
- nếu graphana chỉ nghe localhost hoặc mở ở bất cứ đâu
Các thao tác trên Server A:
Trong trường hợp không rõ, chúng ta có thể sử dụng
lsof -Pi :3000
Điều này sẽ cho bạn biết nếu nó chỉ nghe Localhost hay không.
Grafana có một Tài liệu hay, có thể tìm thấy tại đây
https://grafana.com/docs/grafana/latest/administration/configuration/
Quản trị viên lười biếng từ máy chủ A
bỏ qua hướng dẫn, trong trường hợp, nó nghe localhost và không thích chạm hoặc thay đổi grafana.
Chúng tôi cũng có thể sử dụng nginx cho bước này bằng cách sử dụng mặc định vì không có gì khác đang chạy trong giả định của tôi:
#Bản gốc từ https://grafana.com/tutorials/run-grafana-behind-a-proxy/
bản đồ $http_upgrade $connection_upgrade {
nâng cấp mặc định;
'' đóng lại;
}
người phục vụ {
#Chỉ cho phép mạng LAN của tôi truy cập trang này
cho phép 10.0.0.0/8;
cho phép 192.168.0.0/16;
cho phép 172.16.0.0/16;
#Cuối cùng, không cho phép phần còn lại
Phủ nhận tất cả;
tên máy chủ _;
nghe 80;
gốc /usr/share/nginx/html;
chỉ mục index.html index.htm;
địa điểm / {
proxy_pass http://localhost:3000/;
}
# Kết nối WebSocket trực tiếp Proxy Grafana.
vị trí/api/trực tiếp {
proxy_http_version 1.1;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối "Nâng cấp";
proxy_set_header Máy chủ $http_host;
proxy_pass http://localhost:3000/;
}
}
Cấu hình trên là gì?
Tôi muốn tránh chạm vào Grafana và chỉ sử dụng NGINX để xử lý việc đó. Hơn nữa, bây giờ tôi có thể truy cập bằng IP từ mạng LAN vào phiên bản này.
Khởi động sang Máy chủ B
Một trong những dễ dàng!
Cài đặt nginx với Trình quản lý gói của bạn
apt-get cài đặt nginx
cài đặt apt nginx
Vv.. Tùy thuộc vào phân phối của bạn.
Cấu hình cho NGINX
người phục vụ {
# chuyển hướng https
server_name grafana.mydoma.in;
nghe 80;
trả lại 301 https://$host$request_uri;
}
người phục vụ {
proxy_read_timeout 3600;
# *nếu bạn cần http đơn giản, hãy bỏ ghi chú cổng 80*
# *nhắc nhở, rằng bạn sẽ bình luận ở trên, nếu không nó sẽ không hoạt động*
#nghe80;
nghe 443 ssl http2;
server_name grafana.mydoma.in;
địa điểm / {
proxy_pass http://10.0.0.1:3000;
proxy_set_header Máy chủ $http_host;
}
ssl_certificate /etc/letsencrypt/live/grafana.mydoma.in/fullchain.pem; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/live/grafana.mydoma.in/privkey.pem; # được quản lý bởi Certbot
}
Tôi giả định rằng ở đây bạn sử dụng cho phép mã hóa với tư cách là Nhà cung cấp SSL.
10.0.0.1 là IP của Máy chủ A, vì nó lắng nghe Cổng 80 với tên (_) không hợp lệ nên nó sẽ luôn sử dụng tên này, tất nhiên nếu bạn đã xóa bất kỳ cấu hình mặc định nào khác :-)
kết thúc // Kết luận
Khi mọi thứ hoạt động tốt, bạn có thể truy cập grafana từ mọi nơi.
Nhắc nhở ngắn:
- Bạn KHÔNG cần NGINX trên máy chủ A khi nó nghe mạng LAN hoặc TẤT CẢ các thiết bị.
-
- Trong trường hợp này, bạn có thể Nhảy Cài đặt NGINX trên Server A
-
- Và đi trực tiếp đến phần thứ hai.
Chúc vui vẻ ;-)
Cập nhật:
- OP tuyên bố rằng cấu hình sẽ không thành công.
Không, hoạt động tốt.
root@nginx-verify:/etc/nginx/sites-enabled# nginx -t
nginx: cú pháp file cấu hình /etc/nginx/nginx.conf là ok
nginx: file cấu hình /etc/nginx/nginx.conf kiểm tra thành công
cấu hình đầy đủ hoạt động. Không biết những gì bạn đã sao chép.