跳转到内容

LPI Linux 认证/LPIC2 考试 202/Web 服务

来自维基教科书,开放的书籍,为开放的世界
 
LPI logo

章节概述

[编辑 | 编辑源代码]

实现 Web 服务器维护 Web 服务器实现代理服务器

实现 Web 服务器

[编辑 | 编辑源代码]

关键词,文件和实用程序

  • access.log
  • .htaccess
  • httpd.conf
  • mod_auth
  • Htpasswd
  • Htgroup

练习

  • 维护 Web 服务器
  • 维护 Web 服务器

关键词,文件和实用程序

  • httpd.conf

练习

  • 实现代理服务器

我们将使用 Squid Web 代理服务器版本 2.4 和 Linux 内核版本 2.4。

代理可以通过两种方式完成:正常代理透明代理

  • 正常代理中,客户端在其 Web 浏览器软件中指定代理的主机名和端口号。然后浏览器向代理发出请求,代理将请求转发到原始服务器。
  • 透明代理中,...

如果使用透明代理:您想强制网络上的客户端使用代理,无论他们是否愿意。您希望客户端使用代理,但不想让他们知道他们正在被代理。您希望客户端被代理,但不想费心在数百或数千个 Web 浏览器中更新设置。

有两种类型的透明代理

  • 网关上的 Squid
  • 与网关不同的盒子上的 Squid


网关盒上的 Squid

[编辑 | 编辑源代码]

为普通代理设置 Squid 非常简单:安装 Squid 后,编辑默认配置文件 squid.conf 找到以下指令,取消注释,并更改为适当的值

  • httpd_accel_host virtual
  • httpd_accel_port 80
  • httpd_accel_with_proxy on
  • httpd_accel_uses_host_header on

接下来,查看 cache_effective_user 和 cache_effective_group 指令,并使用专用用户和组(例如 squid/squid)设置它们

最后,查看 http_access 指令。默认值通常是 ``http_access deny all。这将阻止任何人访问 Squid。目前,您可以将其更改为 ``http_access allow all,但一旦它工作,您可能需要阅读有关 ACL(访问控制列表)的说明,并设置缓存,以便只有您本地网络(或任何)上的人才能访问缓存。


Squid 中的 ACL 将使您能够限制对代理的访问。
ACL 规则的通用格式是
acl aclname acltype string1 ...
然后可以在 http_access 指令中使用 ACL 规则

ACL 类型是

  • Src:acl aclname src ip-address/netmask
acl aclname src 172.16.1.0/24
  • Dst:acl aclname dst ip-address/netmask
acl aclname dst 172.16.1.0/24
  • Time:acl aclname time [day-abbreviations: M,T,W,H,F,A,S] [h1:m1-h2:m2]
acl ACLTIME time M 9:00-17:00
  • Port:acl aclname port port-no
acl acceleratedport port 80
  • Proto:acl aclname proto protocol
acl aclname proto HTTP FTP
  • Method:acl aclname method method-type
acl aclname method GET POST
  • Maxconn:acl aclname maxconn integer
acl twoconn maxconn 5


接下来,使用 squid -z 初始化缓存目录(如果这不是 Squid 的新安装,您应该跳过此步骤)。接下来,通过 /etc/init.d/squid 脚本启动 Squid,您应该能够将 Web 浏览器的代理设置设置为盒子的 IP 和端口 3128(除非您更改了默认端口号),并像正常代理一样访问 Squid。实现代理服务器透明代理可以通过两种不同的方式设置:在路由器上或在另一个(远程)主机上路由器上的透明代理将涉及在“正常”模式下设置 Squid,并配置数据包过滤子系统将客户端的连接重定向到 Squid
所需的内核网络选项是

  • 在“常规设置”下
网络支持
Sysctl 支持
  • 在“网络选项”下
网络数据包过滤
TCP/IP 网络
  • 在“网络选项”->“IP:Netfilter 配置”下
连接跟踪
IP tables 支持
完全 NAT
REDIRECT 目标支持
  • 在“文件系统”下
/proc 文件系统支持

在“网络选项”下,您必须对 快速切换 说 NO!


一旦您的新内核启动并运行,请确保您启用了 IP 转发。接下来,要配置 iptables 以启用透明代理,您只需
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

到远程盒子的透明代理

[编辑 | 编辑源代码]

假设我们有两个名为 squid-box 和 iptables-box 的盒子,并且它们位于 local-network 网络上。首先,在 Squid 将要运行的机器 squid-box 上,您不需要 iptables 或此机器上的任何特殊内核选项,只需要 Squid。但是,您 *将* 需要上面描述的“http_accel”选项。现在,在将运行 iptables 的机器 iptables-box 上,您需要按照上面描述的配置内核,除了您不需要 REDIRECT 目标支持。您将需要 2 个 iptables 规则
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
第一个将数据包从 iptables-box 发送到 squid-box。第二个确保回复通过 iptables-box 发送回来,而不是直接发送到客户端。这非常重要,因为否则 Squid 将永远无法从目标 Web 服务器接收答案(因此,无法进行缓存!)。


关键词,文件和实用程序

  • squid.conf
  • Acl
  • http_access
  • 练习
华夏公益教科书