logo NodeSeekbeta

通过路径分流实现哪吒探针面板与rpc使用同域名

优点:cool,适合强迫症患者

原理:哪吒探针的rpc请求都具有相同的一段path,因此可通过path进行分流,nginx,caddy,cf tunnel都支持。可以通过cf waf规则拦截请求来找到具体的path。

屏幕截图 2023-10-19 105253

我们采用/proto.NezhaService/这一段path来分流,通过配置使路径带/proto.NezhaService/的请求发送到哪吒监控端的rpc端口,其它请求则发送到面板端口

nginx配置

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
  upstream grpcservers {
    server localhost:5555;
    keepalive 1024;
  }

  server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name demo.com;

    ssl_certificate          /opt/nezha/nezha.pem;
    ssl_certificate_key      /opt/nezha/nezha.key;

    underscores_in_headers on;

    location / {
      proxy_pass http://localhost:80;
      proxy_set_header Host $http_host;
      proxy_set_header      Upgrade $http_upgrade;
    }

    location ~ ^/(ws|terminal/.+)$  {
      proxy_pass http://localhost:80;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_set_header Host $http_host;
    }

    location ^~ /proto.NezhaService/ {
      grpc_read_timeout 300s;
      grpc_send_timeout 300s;
      grpc_socket_keepalive on;
      grpc_pass grpc://grpcservers;
    }
  }
}

如果使用cf tunnel,由于cf tunnel是从上往下匹配的,注意将/proto.NezhaService/转发放在上面,否则会得到404报错

屏幕截图 2023-10-19 110824

  • xhj006

  • 太厉害了,必须支持

  • 支持

  • @fscarmen #2 望加入到argo-nezha

  • 哪吒-argo 版,已经可以更新

    新部署用户:认真看教程一步步做即可

    老用户:

    • 新方案把三个域名合在一个了,原来的 WEB_DOMAIN,SSH_DOMAIN,DATA_DOMAIN去掉,新的环境变量名为 ARGO_DOMAIN
    • 建议用 json 方案,因为脚本能处理所有的细节。如果一定要用 token,请看清楚步骤。
    • 因为涉及变量较大,如果不想所有客户端都重装,建议把 ARGO_DOMAIN设置为原来的 DATA_DOMAIN,这时你的github授权也要跟着改
  • 项目已更新,大家冲啊

    https://github.com/fscarmen2/Argo-Nezha-Service-Container

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有15799位seeker

🎉欢迎新用户🎉