我在 linode.com 上托管一个 Web 服务器,我想查看所有进入我的 nginx Web 服务器的传入连接。我运行的是 Ubuntu 系统,但似乎找不到类似的东西。我不知道 nginx 是否内置了类似的东西。为了继续清除一些我不想做的选项,我会将它们记录在某种数据库中。谢谢您的帮助!
答案1
您应该监视 nginx 的访问日志,您可以在那里看到所有传入的 Web 请求连接。有一个 httplogmodule,您可以查看它是否在您的配置中启用,否则您可以启用它。有关 nginx httplogmodule 的更多详细信息,请参阅此处。http://wiki.nginx.org/HttpLogModule#access_log
访问日志路径应定义如下,以便您可以看到文件的位置。
access_log /spool/logs/nginx-access.log gzip 缓冲区=32k;
如果上面是访问文件的路径,就可以通过tail命令进行监控。
# tail -f /spool/logs/nginx-access.log
答案2
我不明白你的问题,你想记录吗?还是不想记录?
如果你不想登录
如果你只是想要快速概览已连接的 IP,你可以使用
netstat -atun | grep -E ":(80|443)" | awk '{print $5}' | cut -d: -f1 | sort -u -k1,1
如果你想知道 IP 的连接数,你可以使用
netstat -atun | grep -E ":(80|443)" | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort -n
如果你想登录
您可以使用 IP 表(日志将是/var/log/messages
或/var/log/syslog
)
iptables -A INPUT -p udp --dport 80 -j LOG
iptables -A INPUT -p udp --dport 443 -j LOG
你可以使用 Nginx 本身,参见http://wiki.nginx.org/HttpLogModule
access_log /var/log/nginx-access.log;