IIS网络日志设置:让内网穿透更清晰可见

为什么要关注IIS网络日志

你在家里搭了个网站,用IIS跑起来,再通过内网穿透工具对外发布。一切看似正常,但突然有人反馈打不开,或者加载特别慢。这时候你一脸懵——到底请求有没有进来?是IIS没处理还是穿透链路断了?

答案就在日志里。IIS默认会记录访问日志,但很多人从没打开过那个文件夹,甚至不知道它藏在哪。把日志用好,等于给你的网站装了个行车记录仪。

默认日志长啥样

IIS的日志默认存在 C:\inetpub\logs\LogFiles 目录下,按站点分文件夹,文件名类似 u_ex241015.log,代表2024年10月15日的记录。每行是一次请求,包含IP、时间、请求路径、状态码等信息。

比如某一行:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status
2024-10-15 14:23:01 192.168.1.100 GET /index.html - 80 - 116.23.45.67 Mozilla/5.0 200

这说明公网IP为116.23.45.67的用户在14点23分请求了首页,返回了200成功状态。如果你发现c-ip全是内网地址,那可能你的穿透配置有问题,外网流量根本没进来。

怎么改日志存放位置

系统盘快满了?想统一管理日志?可以换个路径。打开IIS管理器 → 选中站点 → 双击“日志” → 在“目录”那里改成你想要的位置,比如 D:\iislogs。

改完记得检查新路径的文件夹权限,IIS_IUSRS 或应用程序池身份要有写入权限,不然日志写不进去,反而误判问题。

自定义日志字段更实用

默认字段够用,但有时候你想看更多信息,比如用户来源(Referer)或请求耗时。可以在“日志”设置里选择“选择字段”,勾上 cs(Referer) 或 time-taken。

加上time-taken后,日志会多一个字段显示处理毫秒数。如果某个接口经常超过3秒,那就是性能瓶颈,别怪穿透慢,先查自己代码。

配合内网穿透调试的实际场景

假设你用 frp 做内网穿透,外部访问 https://site.your-domain.com 实际指向本地 IIS 的80端口。某天用户说图片加载失败。

你第一反应是去IIS日志里搜 .jpg 结尾的请求,发现这类请求返回了404。接着发现日志里的cs-uri-stem是 /uploads/image.jpg,但你本地文件明明在 /images 下。原来是路径配置写错了。几分钟定位,比抓包还直接。

别让日志撑爆硬盘

日志不是越多越好。默认按天生成,长期不清理容易积压。可以在IIS日志设置里改滚动周期,比如“每天”换成“每小时”,或者限制保留天数。

也可以写个简单脚本定期压缩或删除7天前的日志,放在任务计划里自动跑。别等到C盘红了才想起来。

远程查看日志的小技巧

人在外面,想看家里IIS日志?除了远程桌面,可以把日志目录共享出来,或者用轻量同步工具(如FreeFileSync)推到公网可访问的位置。注意别把整个logs文件夹直接暴露在公网上,里面有真实IP和路径信息,安全风险大。

更稳妥的做法是只同步特定站点的日志片段,加个简单密码页面保护。