【发布时间】:2021-05-04 16:51:48
【问题描述】:
我的笔记本电脑和我的 nixos 服务器 (hostname=nixos) 都连接到我的路由器 (fritz.box)。我可以通过 ping (ping nixos.fritz.box) 和 ssh (ssh username@nixos.fritz.box) 访问 rooter。
我想要的是按照this guide的第一部分在nixos上设置grafana。然后我希望能够从我的笔记本电脑访问 grafana。
在服务器上,我已将 nixos 配置为同时运行 grafana 和反向代理 (nginx):
services.grafana = {
enable = true;
domain = "grafana.nixos.fritz.box";
port = 2342;
addr = "127.0.0.1";
};
# nginx reverse proxy for grafana
services.nginx.virtualHosts.${config.services.grafana.domain} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}";
proxyWebsockets = true;
};
};
# Open ports for http and https
networking.firewall.allowedTCPPorts = [ 80 443 ];
system.stateVersion = "21.03";
很遗憾,我无法从笔记本电脑访问 grafana 网络界面。
我尝试更改 services.grafana.domain 的值以及我在浏览器中键入的内容 (firefox/curl),这是我得到的:
| services.grafana.domain | argument of curl | output of curl |
|---|---|---|
| grafana.nixos.fritz.box | http://grafana.nixos.fritz.box/ | curl: (6) Could not resolve host: grafana.nixos.fritz.box |
| grafana.nixos.fritz.box | https://grafana.nixos.fritz.box/ | curl: (6) Could not resolve host: grafana.nixos.fritz.box |
| grafana.nixos.fritz.box | http://nixos.fritz.box/ | curl: (52) Empty reply from server |
| grafana.nixos.fritz.box | https://nixos.fritz.box/ | curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to nixos.fritz.box:443 |
| nixos.fritz.box | http://nixos.fritz.box/ | curl: (52) Empty reply from server |
| nixos.fritz.box | https://nixos.fritz.box/ | curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to nixos.fritz.box:443 |
| grafana.localhost | (on the server) http://grafana.localhost | curl: (7) Failed to connect to grafana.localhost port 80: Connection refused |
| grafana.localhost | (on the server) https://grafana.localhost | curl: (7) Failed to connect to grafana.localhost port 443: Connection refused |
尤其是最后两行让我感到困惑。
服务器上的netstat -an | grep LISTEN 给了我这个:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2342 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 1837 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 1841 /run/systemd/userdb/io.systemd.DynamicUser
unix 2 [ ACC ] SEQPACKET LISTENING 1853 /run/systemd/coredump
unix 2 [ ACC ] STREAM LISTENING 1862 /run/systemd/journal/stdout
unix 2 [ ACC ] SEQPACKET LISTENING 1868 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 26958 /var/run/nscd/socket
unix 2 [ ACC ] STREAM LISTENING 1905 /run/systemd/journal/io.systemd.journal
unix 2 [ ACC ] STREAM LISTENING 12193659 /run/user/1001/bus
unix 2 [ ACC ] STREAM LISTENING 12205464 /run/user/1001/systemd/private
unix 2 [ ACC ] STREAM LISTENING 13312 /nix/var/nix/daemon-socket/socket
unix 2 [ ACC ] STREAM LISTENING 18416 /var/run/dhcpcd.sock
unix 2 [ ACC ] STREAM LISTENING 18418 /var/run/dhcpcd.unpriv.sock
unix 2 [ ACC ] STREAM LISTENING 13308 /run/dbus/system_bus_socket
我不知道如何使 grafana 在本地网络中可用。请问有人可以帮我吗?
(我知道这个问题有点类似于this one,但那里的解决方案对我没有帮助)
【问题讨论】:
-
首先确保您的
nginx.service正在运行并在端口80 上侦听,这与您运行的netstat不同。那么您的服务器防火墙不会阻止对端口 80 的访问,您收到的错误消息似乎如此。 -
@Tch 好点。我发现
nginx.service.enable没有设置(默认为false)。我写了博文的作者,所以她可以添加。你想写一个答案让我接受吗?顺便说一句,我现在可以通过nixos.fritz.box访问grafana,但希望它可以在grafana.nixos.fritz.box下找到。你碰巧知道为什么会这样(或者我该如何改变它)? -
如果这解决了您的问题,那么您可以编写自己的答案并接受它以供其他人查看,并且您可以对我的 cmets 进行投票。
-
你必须找出谁负责这个子域的A记录。如果没有活动的 dns 可以为您提供该信息,那么您必须在笔记本电脑和服务器的 /etc/hosts 中设置
ipofserver grafana.nixos.fritz.box
标签: nginx networking port grafana nixos