Graylog Docker部署后/api/api-browser/页面无法正常显示求助
解决Graylog Docker部署中API Browser无法正常访问的问题
方法一:修改Graylog环境变量(无需额外代理)
问题核心是Graylog容器内部的API地址与外部访问地址不匹配,导致API Browser跳转路径错误。直接修改docker-compose.yml中Graylog服务的环境变量即可解决:
更新graylog服务的environment配置段:
graylog: image: graylog/graylog:4.3.5 environment: - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # 外部访问地址,保持和你实际访问Graylog的地址一致 - GRAYLOG_HTTP_EXTERNAL_URI=http://localhost:9000/ # 让Graylog绑定到容器所有网卡,允许外部访问 - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000 # 强制API发布地址与外部URI对齐 - GRAYLOG_API_PUBLISH_URI=http://localhost:9000/api/
修改后重启服务:
docker-compose down && docker-compose up -d
此时API Browser的跳转链接会直接指向localhost:9000,页面资源路径也能正确加载。
方法二:使用Nginx反向代理(适合生产环境)
如果需要通过域名或统一入口访问,可添加Nginx代理层:
1. 创建Nginx配置文件graylog.conf
server { listen 80; server_name localhost; # 替换为你的实际域名 location / { proxy_pass http://graylog:9000; 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 X-Forwarded-Proto $scheme; } location /api { proxy_pass http://graylog:9000/api; 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 X-Forwarded-Proto $scheme; # 支持API Browser所需的WebSocket连接 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
2. 更新docker-compose.yml添加Nginx服务
version: '3.1' services: mongo: image: mongo:4.2 networks: - graylog elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 environment: - http.host=0.0.0.0 - transport.host=localhost - network.host=0.0.0.0 - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 deploy: resources: limits: memory: 1g networks: - graylog graylog: image: graylog/graylog:4.3.5 environment: - GRAYLOG_PASSWORD_SECRET=somepasswordpepper - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # 改为Nginx代理后的访问地址 - GRAYLOG_HTTP_EXTERNAL_URI=http://localhost/ - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000 - GRAYLOG_API_PUBLISH_URI=http://localhost/api/ entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh networks: - graylog restart: always depends_on: - mongo - elasticsearch nginx: image: nginx:alpine volumes: - ./graylog.conf:/etc/nginx/conf.d/default.conf networks: - graylog ports: - 80:80 depends_on: - graylog networks: graylog: driver: bridge
重启服务后,通过http://localhost访问Graylog,API Browser即可正常显示。
内容的提问来源于stack exchange,提问作者iBener
相关产品推荐
相关产品推荐

