TOP云物理服务器特惠,CPU可选双路E5-2660(32核)、双路E5-2680v2(40核)、双路E5-2696/98 V4(88核)、双路Gold 6138(80核)、双路Platinum 8173(112核);
内存从32G-128G可选,带宽有单线、多线独享20M-200M,价格低至368元。
购买链接:https://c.topyun.vip/cart?fid=1&gid=236
在服务器运维中,监控端口访问情况是排查故障、分析流量和保障安全的关键环节。无论是Web服务(如Nginx)的HTTP请求,还是数据库、API的TCP连接,通过日志和系统工具可以快速定位问题根源。本文将详细介绍两种核心方法:通过Nginx的access_log分析HTTP访问,以及使用netstat/ss命令查看实时端口连接,助您全面掌握服务器端口活动。推荐搭配TOP云物理服务器特惠机型(立即选购),享受高性能硬件与便捷日志管理的双重优势。
一、Nginx access_log:记录HTTP访问的详细日志
1. access_log的作用与位置
- 作用:记录所有通过Nginx处理的HTTP/HTTPS请求,包括客户端IP、访问时间、请求URL、响应状态码、用户代理(User-Agent)等。
- 默认路径:通常位于
/var/log/nginx/access.log(Linux系统),具体路径可通过Nginx配置文件(nginx.conf或虚拟主机配置)确认:Nginxhttp { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; }
2. 查看access_log的常用命令
方法1:直接查看最新日志
# 实时跟踪日志更新(按Ctrl+C退出)
tail -f /var/log/nginx/access.log
# 查看最近100条日志
tail -n 100 /var/log/nginx/access.log
方法2:按关键词筛选日志
# 筛选特定IP的访问记录(如192.168.1.100)
grep "192.168.1.100" /var/log/nginx/access.log
# 统计404错误请求数量
grep " 404 " /var/log/nginx/access.log | wc -l
# 按访问量排序(统计每个URL的访问次数)
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
方法3:使用日志分析工具
- GoAccess:实时生成可视化HTML报告,支持按IP、URL、状态码等维度分析。
Bash
# 安装GoAccess(Ubuntu/Debian) sudo apt install goaccess # 生成报告并输出到浏览器 goaccess /var/log/nginx/access.log -a -o report.html --log-format=COMBINED
3. 自定义access_log格式
通过修改log_format可记录更多信息(如请求耗时、上游服务器响应时间):
log_format extended '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time';
access_log /var/log/nginx/access.log extended;
- 字段说明:
$request_time:请求处理总时间(秒)。$upstream_response_time:后端服务器响应时间(适用于反向代理场景)。
二、系统工具netstat/ss:查看实时端口连接状态
1. netstat:传统网络状态工具
作用:显示所有活动的网络连接、路由表、接口统计等信息,支持TCP/UDP协议。
常用命令:
# 查看所有监听中的端口(包括TCP/UDP)
netstat -tulnp
# 查看所有TCP连接(包括ESTABLISHED、TIME_WAIT等状态)
netstat -tanp
# 筛选特定端口的连接(如80端口)
netstat -tanp | grep ":80 "
# 统计每个端口的连接数
netstat -tan | awk '{print $4}' | cut -d: -f2 | sort | uniq -c | sort -nr
输出字段说明:
Proto:协议类型(TCP/UDP)。Local Address:本地监听地址和端口。Foreign Address:远程客户端地址和端口。State:连接状态(如LISTEN、ESTABLISHED、TIME_WAIT)。PID/Program name:占用端口的进程ID和名称(需-p参数)。
2. ss:netstat的现代替代工具
优势:速度更快、输出更简洁,支持更多过滤选项。
常用命令:
# 查看所有监听端口(等效于netstat -tulnp)
ss -tulnp
# 查看所有TCP连接(等效于netstat -tanp)
ss -tanp
# 筛选特定状态的连接(如ESTABLISHED)
ss -tanp state established
# 显示详细的连接信息(包括收发队列长度)
ss -tanp -i
3. 结合日志与连接状态排查问题
场景示例:
- 问题:Web服务(80端口)无法访问。
- 排查步骤:
- 使用
ss -tulnp | grep ":80"确认Nginx是否监听端口。 - 使用
netstat -tanp | grep ":80"查看是否有异常连接(如大量TIME_WAIT或CLOSE_WAIT)。 - 通过
tail -f /var/log/nginx/access.log观察实时请求是否到达服务器。
- 使用
三、TOP云物理服务器日志管理优化建议
为提升日志分析效率,推荐以下配置(立即购买):
- 选择高内存机型存储日志:
- 双路E5-2696/98 V4(88核)+ 128G内存:适合需要长期存储大量日志并实时分析的场景。
- 双路Platinum 8173(112核):极致性能,支持日志处理工具(如ELK Stack)的并行化分析。
- 搭配多线独享带宽:
- 避免日志传输因网络拥堵延迟,多线(如BGP)可确保日志从服务器到监控系统的稳定传输。
- 推荐带宽:日志量大的服务选100M以上独享带宽。
- 使用云平台日志服务:
- 在TOP云控制台开通日志服务,自动收集Nginx和系统日志,提供关键词告警、趋势分析等功能。
四、常见问题解答
Q1:access_log文件过大如何处理?
- 日志轮转:通过
logrotate工具定期切割日志(示例配置):Bash# /etc/logrotate.d/nginx /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }
Q2:netstat/ss显示端口被占用但无进程?
- 可能原因:僵尸进程或内核模块占用端口。
- 解决方案:
Bash
# 查找占用端口的内核线程(以80端口为例) lsof -i :80 | grep -v "nginx" # 若为内核模块,尝试重启服务或卸载模块
Q3:如何记录HTTPS(SSL)请求的详细信息?
- 在Nginx配置中为SSL站点单独设置
access_log,并启用$ssl_protocol、$ssl_cipher等字段:Nginxserver { listen 443 ssl; server_name example.com; log_format ssl_log '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" "$http_user_agent" ' '$ssl_protocol/$ssl_cipher'; access_log /var/log/nginx/ssl-access.log ssl_log; # SSL配置... }
立即行动:选购TOP云物理服务器,通过精细化日志管理,打造高效、安全的服务器运维体系!
点击购买




