首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Goaccess在Nginx下运行?

如何让Goaccess在Nginx下运行?
EN

Stack Overflow用户
提问于 2019-07-09 06:48:26
回答 1查看 1.3K关注 0票数 0

我需要配置Nginx让Goaccess工作。

我的环境是:

  • Ubuntu 18.04 LTS
  • Nginx 1.17.1自配置,path=/root
  • 让我们加密
  • sshfs
  • goaccess --启用-utf8 8--启用-geoip=遗留-

由于这是一个自我回答的Q/A,我不包括我的失败尝试,而是张贴我的解决方案。可以随意编辑它或发布另一个改进当前代码的答案。

EN

回答 1

Stack Overflow用户

发布于 2019-08-21 10:21:34

此解决方案/配置解决了我的400和502错误。

nginx conf关键点

代码语言:javascript
复制
upstream goaccess {
    server localhost:7890;
    keepalive 60;
}

server {
    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    server_name rp.test.com;
    root  /var/www/goaccess;
    index  index.html;
    location / {
            try_files $uri  $uri/ @goaccess;
            alias /var/www/goaccess/;
            index  index.html;
            proxy_set_header Upgrade $http_upgrade;
            proxy_buffering on;            
            proxy_set_header Connection "Upgrade";
            proxy_connect_timeout 600s;
            proxy_send_timeout 600s;
            proxy_read_timeout 600s;
            proxy_temp_path  /var/nginx/proxy_temp;
    }

    location @goaccess{
            proxy_pass http://goaccess;
    }

}

goaccess goaccess.sh

代码语言:javascript
复制
#!/bin/sh
goaccess  /root/test2_nginx_log/www.test2.com_access.log -o /var/www/goaccess/index.html --real-time-html --origin=https://rp.test.com --addr=0.0.0.0 --port=7890 --ws-url=wss://rp.test.com --ssl-cert=/etc/letsencrypt/live/test.com/fullchain.pem --ssl-key=/etc/letsencrypt/live/test.com/privkey.pem  --time-format=%H:%M:%S --date-format=%d/%b/%Y --log-format=COMBINED

sshfs run_sshfs.sh

代码语言:javascript
复制
#!/bin/sh
if [ $(mount | grep 'root@111.111.111.xxx:/data/log/server/nginx' | wc -l) -ne 1 ]
then
    echo 'yourpassword' | sshfs root@111.111.111.xxx:/data/log/server/nginx /root/test2_nginx_log -o password_stdin,allow_other
else
    exit 0
fi

最后,用于的sh是否正在运行,并且挂载是否联机,然后重新启动。

检查并重新启动cr.sh

代码语言:javascript
复制
#!/bin/bash
if pgrep -x "goaccess" > /dev/null 
then
    clear ;
    echo "goaccess is running!"
    sleep 1
    echo "now cutting down goaccess...please wait"
    sleep 2
    kill `pgrep goaccess`
    echo "cut down done"
    sleep 1
    echo "now check mount test2 nginx log folder..."
    cd /root/ && ./run_sshfs.sh
    sleep 2
    echo "mount done"
    sleep 1
    echo "now restart goaccess..."
    cd /root/ && sudo nohup ./goaccess.sh > goaccess.log 2>&1 &
    sleep 2
    echo "goaccess was restarting success!"
    sleep 1
    echo "now all done!"
    exit 1
else
    clear ;
    echo "goaccess is down!"
    sleep 1
    echo "now check mount test2 nginx log folder..."
    cd /root/ && ./run_sshfs.sh
    sleep 2
    echo "mount done"
    sleep 1
    echo "now start goaccess..."
    cd /root/ && sudo nohup ./goaccess.sh > goaccess.log 2>&1 &
    sleep 2
    echo "goaccess was starting success!"
    sleep 1
    echo "now all done!"
fi

就这些了。现在打开您的url,它看起来像我的'rp.test.com‘,您应该看到类似的东西在下面(如果没有任何其他特殊条件)。

跑步:

注意:这是CROTEL最初在question中发布的解决方案,随后由社区成员移动到社区wiki回答,以符合堆栈溢出的Q/A格式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56946742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档