• squid 学习笔记(3) -- squid.conf 语法


    在读取配置文件时,squid 忽略空行和注释掉的 行(以#开始)。如下是一些配置行示例:

    cache_log /squid/var/cache.log 
     
    # define the localhost ACL 
     
    acl Localhost src 127.0.0.1/32 
     
    connect_timeout 2 minutes 
     
    log_fqdn on
    

    某些指令取唯一值。在这些情形下,重复赋予该指令不同的值,将覆盖前面的值。 例如,下面是一个连接超时值。第一行无效,因为第二行覆盖了它:

    connect_timeout 2 minutes 
    connect_timeout 1 hour
    

      

    另外,某些指令取列表值。在这些情形下,每一个新增的值都有效。"扩展方式" 指令以这种方法工作:

    extension_methods UNGET 
    extension_methods UNPUT 
    extension_methods UNPOST
    

    对这些基于列表的指令,你通常能在同一行中赋予多个值:

    extension_methods UNGET UNPUT UNPOST
    

      

    许多指令有通用类型。例如,连接超时值是一个时间规范,在数字后面跟着时间 单元。例如:

    connect_timeout 3 hours 
    client_lifetime 4 days 
    negative_ttl 27 minutes

    类似的,大量的指令指向文件大小或者内存额度。例如,你可以这样编写大小规 范:十进制数字后面跟 bytes,KB,MB 或 GB.例如:

    minimum_object_size 12 bytes 
    request_header_max_size 10 KB 
    maximum_object_size 187 MB
    

      

    另一种值得提起的类型是触发器,它的值是 on 或者 off。许多指令使用该类型。 例如:

    server_persistent_connections on 
     
    strip_query_terms off 
     
    prefer_direct on 
    

      

    通常,配置文件指令能以任何顺序出现。然而,如果某个指令指向的值被其他指 令所定义,那么顺序就很重要。访问控制列表是个好的例子。acl 被用在 http_access 规则之前必须被定义:

    acl Foo src 1.2.3.4 
    http_access deny Foo
    

     squid.conf 文件里的许多东西是大小写敏感的,例如指令名。你不能将 http_port 写成 HTTP_port。

    每次安装 squid 后,当前默认配置文件存放在$prefix/etc 目录下的 squid.conf.default。

    User ID

    unix 进程和文件拥有文件和组属主的属性。你必须选择某个用户 和组给 squid。该用户和组的组合,必须对大部分 squid 相关的文件和目录有读 和写的权限。

    推荐创建名为"squid"的用户和组。这避免了某人利用 squid 来读取系统 中的其他文件。假如不止一个人拥有对 squid 的管理权限,你可以将他们加到 squid 组里。

    unix 进程继承了它们父进程的属主属性。那就是说,假如你以 joe 用户来启动 squid,squid 也以 joe 来运行。假如你不想以 joe 来运行 squid,你需要预先改 变你的用户 ID。这是 su 命令的典型功能。例如:

    joe% su - squid 
    quid% /usr/local/squid/sbin/squid
    

      

    不幸的是,运行 squid 并非总是如此简单。在某些情况下,你必须以 root 来启 动 squid,这依赖于你的配置。例如,仅仅 root 能绑定 TCP 套接字到特权端口 上,如 80。假如你必须以 root 来启动 squid,你必须设置 cache_effective_user 指令。它告诉 squid,在执行完需要特别权限的任务后,变成哪个用户。例如:

    cache_effective_user squid
    

    你提供的该名字必须是有效用户(在/etc/passwd 文件里)。请注意仅仅当你以 root 来启动 squid 时,你才需要用到该指令。仅仅 root 有能力来随意改变用户 身份。假如你以 joe 来启动 squid,它不能改变到 squid 用户。 你可能尝试不设置 cache_effective_user,直接以 root 来运行 squid。假如你 试过,你会发现 squid 拒绝运行。这违背了安全规则。假如外部攻击者有能力危 及或利用 squid,他能获取对系统的全部访问权。尽管我们努力使 squid 安全和 少 bug,但还是稳重点好。

    假如你没有设置 cache_effective_user,以 root 来启动 squid,squid 使用 nobody 作为默认值。不管你选择什么用户 ID,请确认它有对下面目录的读访问 权:$prefix/etc,$prefix/libexec,$prefix/share.该用户 ID 也必须有对日志 文件和缓存目录的写访问权。 squid 也有一个 cache_effective_group 指令,但你也许不必设置它。默认的, squid 使用 cache_effective_user 的默认组(从/etc/passwd 文件读取)。

    端口号

    http_port 指令告诉 squid 在哪个端口侦听 HTTP 请求。默认端口是 3128: http_port 3128 假如你将 squid 作为加速器运行,你也许该将它设为 80。

    你能使用附加的 http_port 行,来指示 squid 侦听在多个端口上。假如你必须支 持客户组(它们被配置得不一致),这点就经常有用。例如,来自某个部门的浏 览器发送请求到 3128,然而另一个部门使用 80 端口。简单的将两个端口号列举 出来:

    http_port 3128
    
    http_port 8080
    

      

    你也能使用 http_port 指令来使 squid 侦听在指定的接口地址上。当 squid 作为 防火墙运行时,它有两个网络接口:一个内部的和一个外部的。你可能不想接受 来自外部的 http 请求。为了使 squid 仅仅侦听在内部接口上,简单的将 IP 地址 放在端口号前面: 

    http_port 192.168.1.1:3128
    

      

    日志文件路径

    默认的日志目录是 squid 安装位置下的 logs 目录。假如你在./configure 时没有使用--prefix=选项,那么默认的日志文件路径是 /usr/local/squid/var/logs.

    squid 有三个主要的日志文件:

    cache.log,

    access.log,

    store.log.

    第一个文件 即 cache.log,包含状态性的和调试性的消息。当你刚开始运行 squid 时,你应 密切的关注该文件。假如 squid 拒绝运行,理由也许会出现在 cache.log 文件的 结尾处。在正常条件下,该文件不会变得很大。也请注意,假如你以-s 选项来 运行 squid,重要的 cache.log 消息也可被送到你的 syslog 进程。通过使用 cache_log 指令,你可以改变该日志文件的路径:

     cache_log /squid/logs/cache.log
    

      

    access.log 文件包含了对 squid 发起的每个客户请求的单一行。每行平均约 150 个字节。也就是说,在接受一百万条客户请求后,它的体积约是 150M。请使用 cache_access_log 指令来改变该日志文件的路径:

    cache_access_log /squid/logs/access.log
    

      

    请使用 cache_store_log 指令来改变它的位置:

     cache_store_log /squid/logs/store.log
    

      

    访问控制

    squid 默认的配置文件拒绝每一个客户请求。在任何人能使用代理之前,你必须 在 squid.conf 文件里加入附加的访问控制规则。最简单的方法就是定义一个针 对客户 IP 地址的 ACL 和一个访问规则,告诉 squid 允许来自这些地址的 HTTP 请求。squid 有许多不同的 ACL 类型。src 类型匹配客户 IP 地址,squid 会针对 客户 HTTP 请求检查 http_access 规则。这样,你需要增加两行:

    acl MyNetwork src 192.168.0.0/16
    
    http_access allow MyNetwork
    

    请将这些行放在正确的位置。http_access 的顺序非常重要,但是 acl 行的顺序你不必介意。你也该注意默认的配置文件包含了一些重要的访问控制,你不应该 改变或删除它们,除非你完全理解它们的意义。

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 在该注释之后,以及"http_access deny all"之前插入你自己的新规则。

    管理联系信息

    你应该设置 cache_mgr 指令作为对用户的帮助。它是一个 email 地址,假如问题 发生,用户能写信给它。cache_mgr 地址默认出现在 squid 的错误消息里。例如:

    cache_mgr squid@web-cache.net
    

      

  • 相关阅读:
    jdk1.8安装与配置
    java编译器——idea的安装
    原型设计作业
    案例分析作业
    202103226-1 编程作业
    阅读任务
    准备工作
    java课程总结
    第十四周总结
    第十三周总结
  • 原文地址:https://www.cnblogs.com/saryli/p/15214318.html
Copyright © 2020-2023  润新知