我有一个单页应用程序的前端角度应用程序,其 nginx 配置如下:
events{}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ $uri.html /index.html;
}
}
}
问题在于访问日志仅在刷新整个页面时写入日志,而不是在每次用户操作(即单击页面的不同元素)时写入日志。
我希望能够记录每个用户操作,而不仅仅是打开或刷新页面时的操作。有什么建议可以实现吗?
答案1
不,这是不可能的。由于这只是一个页面,因此这就是从服务器检索到的全部内容。其他一切都纯粹发生在客户端,不会向服务器发送进一步的请求。
您需要在每次点击时发送一个 AJAX 请求才能记录它。
答案2
nginx
是服务器端的一块拼图。对于单页应用程序,用户(理想情况下)最多访问您的服务器一次以下载软件包,之后就永远不会再访问,直到应用程序自行发出请求,例如加载某些数据或提交表单。
您说要记录“每个用户操作”。即使在静态 HTML 网站上,nginx
访问日志也不是完成这项工作的正确工具。用户操作发生在用户的浏览器中,而不是您的服务器软件中。尽管您可以从服务器端记录尽可能多的信息,但您仍然只能猜测用户在做什么。他们是否点击了返回主页的链接、页面顶部的图标、他们保存的书签、打开了新选项卡,将他们的主页设置为您的网站等?您永远无法知道。
对于想要记录用户与 Angular SPA 交互的问题,正确的解决方案是记录用户交互在Angular SPA。
没有从属关系或经验,但我听说哨兵很好。您也可以根据自己的经验水平自己编写一些东西,而不必费太多力气。在 React 应用程序中,我通常将redux
操作历史记录转储到 JSON blob 中以附加到崩溃报告中,这是一种低技术解决方案,效果非常好。
nginx
访问日志记录很棒并且有其用途,但它的用途是查明哪些端点在什么时候被谁攻击,密切关注主动攻击、滥用请求泛滥等等。
答案3
您也可以尝试齐皮,Sentry 的替代品。Zipy 是一个错误跟踪工具,可帮助开发人员监控和跟踪其应用程序中的错误。它提供实时错误警报以及详细的报告和分析,以帮助开发人员快速诊断和修复问题。