ac0d3r / Hyuga

Hyuga 是一个用来监控带外(Out-of-Band)流量的工具。🪤
GNU General Public License v3.0
516 stars 61 forks source link

是否有办法解决反向代理的问题 #10

Closed 0heartland0 closed 2 years ago

0heartland0 commented 2 years ago

由于一台服务器web环境较多,修改docker-compose.yml文件中的端口后跑起来域名+端口看着有点别捏,如果不改端口不与其他web环境冲突就只能用新的服务器跑起来了

测试过修改端口,然后通过nginx反向代理进行转发,环境可以正常访问,但是不管是通过http访问生成的域名还是ping生成的域名,都没有数据显示,只有加上原端口号进行访问才会显示数据,是否有方法解决这个问题?

还有个问题就是默认跑起来的docker容器时区不对,我将原有的docker-compose.yml文件修改了下,解决了时区的问题,修改后的文件如下:

version: "3"
services:
  redis:
    image: "redis:alpine"
    container_name: hyuga_redis
    restart: always
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    volumes:
      - "./deploy/redis:/data"
      - /etc/localtime:/etc/localtime:ro

  hyuga:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: hyuga
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    ports:
      - 80:8000
      - "53:53/udp"
    restart: always
    depends_on:
      - "redis"
    volumes:
      - /etc/localtime:/etc/localtime:ro
ac0d3r commented 2 years ago

反向代理应该是没有问题的,可以看下nginx配置文件吗?

感谢修复 docker 上的时区问题,我去更新一下。

0heartland0 commented 2 years ago

反向代理应该是没有问题的,可以看下nginx配置文件吗?

感谢修复 docker 上的时区问题,我去更新一下。

我直接用宝塔的反向代理gui界面设置的,具体配置文件方面不是太会,还请大佬指教

宝塔nginx反向代理配置如下:

    #PROXY-START
    location / 
    {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;

        #持久化连接相关配置
        #proxy_connect_timeout 30s;
        #proxy_read_timeout 86400s;
        #proxy_send_timeout 30s;
        #proxy_http_version 1.1;
        #proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection "upgrade";

        add_header X-Cache $upstream_cache_status;

        expires 12h;
    }

    location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
    {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_pass http://127.0.0.1:8001;

    }

    location ~ .*\.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$
    {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_pass http://127.0.0.1:8001;

        #缓存相关配置
        #proxy_cache cache_one;
        #proxy_cache_key $host$request_uri$is_args$args;
        #proxy_cache_valid 200 304 301 302 1h;

        expires 24h;
    }
    #PROXY-END
ac0d3r commented 2 years ago

需要配置 host ,后端根据请求的 host(与config.yaml保持一致) 来记录的,下面这个配置你可以参考一下:

server {
    listen 80;
    server_name *.hyuga.io;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://web:8001;
    }
}
0heartland0 commented 2 years ago

需要配置 host ,后端根据请求的 host(与config.yaml保持一致) 来记录的,下面这个配置你可以参考一下:

server {
    listen 80;
    server_name *.hyuga.io;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://web:8001;
    }
}

感谢指导,之前由于没有在server_name绑定泛解析* 导致只能访问无法获取数据,现在已经可以正常获取数据了,但是做完反向代理后好像有个bug,获取新的域名后,对其进行ping操作有时候会出现找不到主机的情况,不知道是不是宝塔方面的问题,如下图: 111111 222222 333333

ac0d3r commented 2 years ago

需要配置 host ,后端根据请求的 host(与config.yaml保持一致) 来记录的,下面这个配置你可以参考一下:

server {
    listen 80;
    server_name *.hyuga.io;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://web:8001;
    }
}

感谢指导,之前由于没有在server_name绑定泛解析* 导致只能访问无法获取数据,现在已经可以正常获取数据了,但是做完反向代理后好像有个bug,获取新的域名后,对其进行ping操作有时候会出现找不到主机的情况,不知道是不是宝塔方面的问题,如下图: 111111 222222 333333

是不是这个域名 ns 配置的不正确呢?

0heartland0 commented 2 years ago

需要配置 host ,后端根据请求的 host(与config.yaml保持一致) 来记录的,下面这个配置你可以参考一下:

server {
    listen 80;
    server_name *.hyuga.io;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://web:8001;
    }
}

感谢指导,之前由于没有在server_name绑定泛解析* 导致只能访问无法获取数据,现在已经可以正常获取数据了,但是做完反向代理后好像有个bug,获取新的域名后,对其进行ping操作有时候会出现找不到主机的情况,不知道是不是宝塔方面的问题,如下图: 111111 222222 333333

是不是这个域名 ns 配置的不正确呢?

ns配置是正确的,可能是运营商dns解析生效比较慢的问题,做完反代后我发现了新的问题,dns数据显示一切正常,http里面Remote Address获取不到,如下图: dns返回正常: 7777777777

http不返回Remote Address: 使用本机、服务器都不返回Remote Address 444444 55555555 66666666

ac0d3r commented 2 years ago

感谢找出的问题,是 headers key 写错了,我更新了一下 ,获取真实 IP 逻辑如下: image

0heartland0 commented 2 years ago

感谢找出的问题,是 headers key 写错了,我更新了一下 ,获取真实 IP 逻辑如下: image

git最新的代码进行搭建套上反代后问题还是出现了,http记录里面还是没有Remote Address,是反代的问题吗? 11111111111111111111

ac0d3r commented 2 years ago

我搭建测试了一番,没发现获取 remote address 的问题,可能是反代配置的问题,要不看看 nginx access_log 排查一下?

0heartland0 commented 2 years ago

我搭建测试了一番,没发现获取 remote address 的问题,可能是反代配置的问题,要不看看 nginx access_log 排查一下?

我拉取了最新的代码重新编译了一遍,暂时没有什么问题了,感谢指导,后续有问题再沟通。