Squid3代理无法写入日志文件

Squid3代理无法写入日志文件

我在 Rasbian 上安装了 Squid3,并做了一些小配置。然后我将其设置为缓存到自动安装的 USB 驱动器。

我查看了日志,只发现了TCP_MISS。我希望在使用 Squid 一段时间后,我会看到一些命中。我查看了缓存(ufs 树在那里),它似乎正在缓存文件。

我运行squid -X -d9后收到无法写入日志文件的错误:

FATAL: Cannot open '/var/log/squid3/access.log' for writing.
The parent directory must be writeable by the
user 'proxy', which is the cache_effective_user
set in squid.conf.
Squid Cache (Version 3.1.20): Terminated abnormally.

权限为/var/log/squid3

drwxrwxr-x  2 proxy proxy   4096 Apr 29 14:13 squid3

内部:

-rwxrwx--- 1 proxy proxy      0 Apr 29 06:25 access.log
-rwxrwx--- 1 proxy proxy 303469 Apr 28 23:41 access.log.1
-rwxrwxrwx 1 proxy proxy  14730 Apr 29 14:47 cache.log
-rwxrwx--- 1 proxy proxy  79626 Apr 28 22:00 cache.log.1
-rwxrwx--- 1 root  root       0 Apr 27 14:09 store.log.1

缓存的权限安装在/cache0

drwxrwxr-x  19 root proxy  4096 Apr 29 14:47 cache0

我该如何解决这些错误?提前谢谢您。

答案1

默认的 squid 用户proxy需要父级对其写入的所有目录的写权限;包括缓存目录(cache_dir)和日志文件。

我不想更改/var或的权限/var/log,因此我创建了一个新目录/squid3_logs并在其中设置了日志位置squid.conf

access_log /squid3_logs/access.log squid
cache_store_log /squid3_logs/store.log
cache_log /squid3_logs/cache.log

我还确保缓存中的所有文件和子目录 ( /cache0) 都具有适当的权限。当我以我的用户身份运行调试命令时squid -X -d9,我认为会自动将所有者更改swap.state为我。

sudo chown proxy:proxy /cache0/swap.state
sudo chmod -R 775 /cache0

现在一切似乎都正常了。当我运行调试命令或解析配置文件时,我没有发现任何错误(squid3 -k parse)。

答案2

首先将所有者更改为代理,然后在 squid.conf 中添加用户,如下所示 sudo chown proxy:proxy /usr/local/squid -R

对于权限错误,您只需在 squid.conf 中设置 cache_effective_user 并重新启动 squid。/usr/local/squid/etc/squid.conf

cache_effective_user 代理

此配置解决了我的问题

相关内容