我在 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 代理
此配置解决了我的问题