搜档网
当前位置:搜档网 › Linux下架设代理服务器-Squid配置

Linux下架设代理服务器-Squid配置

Linux下架设代理服务器-Squid配置
Linux下架设代理服务器-Squid配置

Linux下架设代理服务器-Squid配置

一、代理服务器概述

1.1什么是代理服务器

在TCP/IP网络中,传统的通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。

1.2 代理服务器的功能

一般说来,代理服务器具有以下的功能:

1.通过缓存增加访问速度

随着Internet的迅猛发展,网络带宽变得越来越珍贵。所以为了提高访问速度,好多ISP都提供代理服务器,通过代理服务器的缓存功能来加快网络的访问速度。一般说来,大多数的代理服务器都支持HTTP缓存,但是,有的代理服务器也支持FTP缓存。在选择代理服务器时,对于大多数的组织,只需要HTTP缓存功能就足够了。

通常,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的数据请求,在将响应数据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时就会大大缩短响应时间。还需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存的。

2.提供用私有IP访问Internet的方法

IP地址是不可再生的宝贵资源,假如你只有有限的IP地址,但是需要提供整个组织的Internet访问能力,那么,你可以通过使用代理服务器来实现这一点。

3.提高网络的安全性

这一点是很明显的,如果内部用户访问Internet都是通过代理服务器,那么,代理服务器就成为进入Internet的唯一通道;反过来说,代理服务器也是Internet访问内部网的唯一通道,如果你没有做反向代理,则对于Internet上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。

1.3 代理服务器的分类及特点

通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这里,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。

我认为有必要好好搞清楚两者的区别,只有真正明白了内在地机理,才能在遇到问题时,有章可循,才不会一头雾水,不知从何解决问题。因此,下面我们就

通过具体的实例来说明。本章的写作思路来源于Paul Russell所写的IPCHAINS-HOWTO。下面所举的例子也来源于该文章,我觉得我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。当然,这里所谓的内部网是指使用私有IP的内部网络。

我们的例子都基于以下假设:

你的域名为https://www.sodocs.net/doc/7315760177.html,,你的内部网(192.168.1.*)用户通过

https://www.sodocs.net/doc/7315760177.html,(外部接口 eth0:1.2.3.4;内部接口 eth1:192.168.1.1)的代理服务器访问Internet,换句话说,该代理服务器是唯一一台直接与Internet和内部网相连的机器。并假该设代理服务器上运行着某种代理服务器软件(如squid)。假设内部网中某一客户机为

https://www.sodocs.net/doc/7315760177.html,(192.168.1.100)。

+-------------------+

|内部网(192.168.1.*)| eth1+--------+eth0 DDN

| +------------| proxy |<===============>;Internet

|client198.168.1.100| +--------+

+-------------------+

eth0: 1.2.3.4

eth1: 198.168.1.1

1.3.1传统代理

在以上基础上我们做以下工作:

1.代理服务软件被绑定到代理服务器的8080端口。

2.客户端浏览器被配置使用代理服务器的8080端口。

3.客户端不需要配置dns。

4.代理服务器上需要配置代理服务器。

5.客户端不需要配置缺省路由。

当我们在客户端浏览器中打开一个web请求,比如

“https://www.sodocs.net/doc/7315760177.html,”,这时将陆续发生以下事件:

1.客户端使用某一端口(比如1025)连接代理服务器8080端口,请求web页面“https://www.sodocs.net/doc/7315760177.html,”

2.代理服务器向dns请求“https://www.sodocs.net/doc/7315760177.html,”,得到相应的IP地址

202.99.11.120。然后,代理服务器使用某一端口(比如1037)向该IP地址的80端口发起web连接请求,请求web页面。

3.收到响应的web页面后,代理服务器把该数据传送给客户端。

4.客户端浏览器显示该页面。

从https://www.sodocs.net/doc/7315760177.html,的角度看来,连接是在1.2.3.4地1037端口和

202.99.11.120的80端口之间建立的。从client的角度看来,连接是在192.168.1.100的1025端口和1.2.3.4的8080端口之间建立的。

1.3.2 透明代理

透明代理的意思是客户端根本不需要知道有代理服务器的存在。

在以上基础上我们做以下工作:

1.配置透明代理服务器软件运行在代理服务器的8080端口。

2.配置代理服务器将所有对80端口的连接重定向到8080端口。

3.配置客户端浏览器直接连解到Internet。

4.在客户端配置好dns.

5.配置客户端的缺省网关为192.168.1.1.

当我们在客户端浏览器中打开一个web请求,比如

“https://www.sodocs.net/doc/7315760177.html,”,这时将陆续发生以下事件:

1.客户端向dns请求“https://www.sodocs.net/doc/7315760177.html,”,得到相应的IP地址

202.99.11.120。然后,客户端使用某一端口(比如1066)向该IP地址的80端口发起web连接请求,请求web页面。

2.当该请求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8080。于是,透明代理服务器用某一端口(比如1088)向202.99.11.120的80端口发起web连接请求,请求web页面。

3.收到响应的web页面后,代理服务器把该数据传送给客户端。

4.客户端浏览器显示该页面。

从https://www.sodocs.net/doc/7315760177.html,的角度看来,连接是在1.2.3.4地1088端口和

202.99.11.120的80端口之间建立的。从client的角度看来,连接是在192.168.1.100的1066端口和202.99.11.120的80端口之间建立的。

以上就是传统代理服务器和透明代理服务器的区别所在。

二、各种代理服务器的比较

linux下的代理服务器软件很多,我从https://www.sodocs.net/doc/7315760177.html,(一个著名的linux

软件站点)查看了一下,足有六十多个。但是被广泛应用的只有Apache、socks、squid等几个实践证明是高性能的代理软件。下面我们分别来比较一下这几个软件:

2.1 Apache

Apache是世界上用的最广泛的HTTP服务器,之所以用的最广泛,是因为它强大的功能、高效率、安全性和速度。从1.1.x版本开始,Apache开始包含了一个代理模块。用Apache作代理服务器的性能优势并不明显,不建议使用。

2.2 Socks

Socks是一种网络代理协议,该协议可以让客户机通过Socks服务器获得对Internet的完全访问能力。Scoks在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,Scoks是透明的;从服务器的角度看来,Socks 就是客户端。客户端不需要具有对Internet的直接访问能力(也就是说,可以使用私有IP地址),因为Socks服务器能够把来自于客户端的连接请求重定向到Internet。此外,Socks服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。同理,Socks也能防止非授权的Internet用户访问及的内部网络。所以常常把Socks 当作防火墙来使用。

常见的浏览器如netscape、IE等可以直接使用Socks, 并且我们也可以使用socsk5的所带的client来使那些不直接支持socks的internet软件使用Socks。

更多的资料可以参考Socks官方站点https://www.sodocs.net/doc/7315760177.html,。

2.3 squid

对于web用户来说,squid是一个高性能的代理缓存服务器,squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

squid将数据元缓存在内存中,同时也缓存dns查询的结果,除此之外,它还支持非模块化的dns查询,对失败的请求进行消极缓存。squid支持SSL,支持访问控制。由于使用了ICP(轻量Internet缓存协议),squid能够实现层叠的代理阵列,从而最大限度地节约带宽。

squid由一个主要的服务程序squid,一个dns查询程序dns server,几个重写请求和执行认证的程序,以及几个管理工具组成。当squid启动以后,它可以派生出预先指定数目的dns server进程,而每一个dns server进程都可以执行单独的dns查询,这样一来就大大减少了服务器等待dns查询的时间。

2.4 选择

从上面的比较可以看出,Apache主要功能是web服务器,代理功能只不过是其一个模块而已,Socks虽然强大,但有欠灵活,因此我们着重推荐你使用squid。下面的章节我们就一起来学习squid激动人心的特性及相关的安装与配置。

三、安装squid Proxy Server

3.1获取软件

你可以通过以下途径获取该软件:

1.从squid的官方站点https://www.sodocs.net/doc/7315760177.html,下载该软件;

2.从你的linux发行版本中获取该软件;

通常,squid软件包有两种:一种是源代码,下载后需要自己重新编译;可执行文件,下载后只需解压就可以使用;另一种是就是RedHat所使用的rpm包。下面我们分别讲讲这两种软件包的安装方法。

3.2安装软件

我们以目前最新的稳定版本squid-2.3.STABLEX为例。

3.2.1rpm包的安装

1.进入/mnt/cdrom/RedHat/RPMS

2.执行rpm -ivh squid-2.2.STABLE4-8.i386.rpm。

当然,我们也可以在开始安装系统的过程中安装该软件。

3.2.2 源代码包的安装

1.从https://www.sodocs.net/doc/7315760177.html,下载squid-

2.

3.STABLE2-src.tar.gz。

2.将该文件拷贝到/usr/local目录。

3.解开该文件 tar xvzf squid-2.3.STABLE2-src.tar.gz。

4.解开后,在/usr/local生成一个新的目录squid-2.3.STABLE2,为了方便用mv命令将该目录重命名为squid mv squid-2.3.STABLE2 squid;

5.进入squid cd squid

6.执行./configure 可以用./confgure --prefix=/directory/you/want指定

安装目录

系统缺省安装目录为/usr/local/squid。

7.执行 make all

8.执行 make install

9.安装结束后,squid的可执行文件在安装目录的bin子目录下,配置文件在etc 子目录下。

四、配置squid基础篇——让代理服务器跑起来

由于RedHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以,我们下面的说明都是以RedHat6.1环境下

squid-2.2.STABLE4-8版本为主。从我的使用经验看来,该版本的squid要比其他版本稳定的多,以前的1.1.22版本也比较稳定,但是在功能及灵活性方面有所欠缺。

squid有一个主要的配置文件squid.conf,在RedHat环境下所有squid的配置文件位于/etc/squid子目录下。

4.1常用的配置选项

因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让squid跑起来。

下面我们来看一看squid.conf文件的结构以及一些常用的选项:

squid.conf配置文件的可以分为十三个部分,这十三个部分分别是:

https://www.sodocs.net/doc/7315760177.html,WORK OPTIONS (有关的网络选项)

2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项)

3.OPTIONS WHICH AFFECT THE CACHE SIZE (定义cache大小的有关选项)

4.LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及cache 的目录)

5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)

6.OPTIONS FOR TUNING THE CACHE (调整cache的选项)

7.TIMEOUTS (超时)

8.ACCESS CONTROLS (访问控制)

9.ADMINISTRATIVE PARAMETERS (管理参数)

10.OPTIONS FOR THE CACHE REGISTRATION SERVICE (cache注册服务选项)

11.HTTPD-ACCELERATOR OPTIONS (HTTPD加速选项)

12.MISCELLANEOUS (杂项)

13.DELAY POOL PARAMETERS (延时池参数)

虽然squid的配置文件很庞大,但是如果你只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,你只需要修改配置文件中的几个选项。这些几个常用选项分别是:

1.http_port

说明:定义squid监听HTTP客户连接请求的端口。缺省是3128,如果使用HTTPD 加速模式则为80。你可以指定多个端口,但是所有指定的端口都必须在一条命令行上。

2.cache_mem (bytes)

说明:该选项用于指定squid可以使用的内存的理想值。这部分内存被用来存储

以下对象:

In-Transit objects (传入的对象)

Hot Objects (热对象,即用户常访问的对象)

Negative-Cached objects (消极存储的对象)

需要注意的是,这并没有指明squid所使用的内存一定不能超过该值,其实,该选项只定义了squid所使用的内存的一个方面,squid还在其他方面使用内存。所以squid实际使用的内存可能超过该值。缺省值为8MB。

3.cache_dir Directory-Name Mbytes Level-1 Level2

说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。"directory "指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid。“Mbytes”定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。“Level-1”是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,“Level-2”是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。

那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。

已知量:

DS = 可用交换空间总量(单位KB)/ 交换空间数目

OS = 平均每个对象的大小= 20k

NO = 平均每个二级子目录所存储的对象数目 = 256

未知量:

L1 = 一级子目录的数量

L2 = 二级子目录的数量

计算公式:

L1 x L2 = DS / OS / NO

注意这是个不定方程,可以有多个解。

4.acl

说明:定义访问控制列表。

定义语法为:

acl aclname acltype string1 ...

acl aclname acltype "file" ...

当使用文件时,该文件的格式为每行包含一个条目。

acltype 可以

是 src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。

分别说明如下:

src 指明源地址。可以用以下的方法指定:

acl aclname src ip-address/netmask ... (客户ip地址)

acl aclname src addr1-addr2/netmask ... (地址范围)

dst 指明目标地址。语法为:

acl aclname dst ip-address/netmask ... (即客户请求的服务器的ip地址) srcdomain 指明客户所属的域。语法为:

acl aclname srcdomain https://www.sodocs.net/doc/7315760177.html, ... squid将根据客户ip反向查询dns。dstdomain 指明请求服务器所属的域。语法为:

acl aclname dstdomain https://www.sodocs.net/doc/7315760177.html, ... 由客户请求的URL决定。

注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的dns解

析来确定其完整域名,如果失败就记录为“none”。

time 指明访问时间。语法如下:

acl aclname time [day-abbrevs] [h1:m1-h2][hh:mm-hh]

day-abbrevs:

S - Sunday

M - Monday

T - Tuesday

W - Wednesday

H - Thursday

F - Friday

A - Saturday

h1:m1 必须小于 h2:m2,表达示为[hh:mm-hh]。

port 指定访问端口。可以指定多个端口,比如:

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... (指定一个端口范围)

proto 指定使用协议。可以指定多个协议:

acl aclname proto HTTP FTP ...

method 指定请求方法。比如:

acl aclname method GET POST ...

5.http_access

说明:根据访问控制列表允许或禁止某一类用户访问。

如果某个访问没有相符合的项目,则缺省为应用最后一条项目的“非”。比如最后一条为允许,则缺省就是禁止。所以,通常应该把最后的条目设为

"deny all" 或 "allow all" 来避免安全性隐患。

4.2 应用实例

假想情景:某公司用squid作代理服务器,该代理服务器配置为

PII450/256M/8.4G,公司所用ip段为1.2.3.0/24,并且想用8080作为代理端

口。

则相应的squid配置选项为:

1.http_port

http_port 8080

2.cache_mem

思路:由于该服务器只提供代理服务,所以该值可以尽量设得大一些。

cache_mem 194M

3.cache_dir Directory-Name Mbytes Level-1 Level2

思路:硬盘为8.4G的,在安装系统时应该做好规划,为不同的文件系统划分可用空间。在本例中,我们可以这样来划分:

/cache1 3.5G

/cache2 3.5G

/var 400M

swap 127M

/ 剩余部分

并且,在安装时,我们尽量不安装不必要的包。这样在节约空间的同时可以提高系统的安全性和稳定性。下面我们来计算所需的第一级和第二级子目录数。

已知量:

DS = 可用交换空间总量(单位KB)/ 交换空间数目=7G/2=3500000KB

OS = 平均每个对象的大小= 20k

NO = 平均每个二级子目录所存储的对象数目 = 256

未知量:

L1 = 一级子目录的数量

L2 = 二级子目录的数量

计算公式:

L1 x L2 = DS / OS / NO=3500000/20/256=684

我们取

L1=16

L2=43

所以,我们的cache_dir语句为:

cache_dir /cache1 3500M 16 43

cache_dir /cache2 3500M 16 43

4.acl

思路:通过src来定义acl.

acl allow_ip src 1.2.3.4/255.255.255.0

5.http_access

http_access allow allow_ip

4.3启动、停止squid。

配置并保存好squid.conf后,可以用以下命令启动squid。

squid

或者,使用RedHat的启动脚本来启动squid.

/etc/rc.d/init.d/squid start

同样地,你也可以用下列脚本停止运行squid或重启动squid.

/etc/rc.d/init.d/squid stop

/etc/rc.d/init.d/squid restart

五、根据需求配置你的squid——进阶篇

5.1其它配置选项

在进行squid的一些高级应用之前,我们有必要对其他有用的配置选项作一个全面的了解。下面我们分类来讲一讲这些选项,用于某些特殊应用的选项我们将放

在讲该种应用时来讲。

5.1.1网络选项

1.tcp_incoming_address

tcp_outgoing_address

udp_incoming_address

udp_outgoing_address

说明:

tcp_incoming_address指定监听来自客户或其他squid代理服务器的绑定ip地址;

tcp_outgoing_address指定向远程服务器或其他squid代理服务器发起连接的ip地址

udp_incoming_address为ICP套接字指定接收来自其他squid代理服务器的包的ip地址 udp_outgoing_address为ICP套接字指定向其他squid代理服务器发送包的ip地址;

缺省为没有绑定任何ip地址。该绑定地址可以用ip指定,也可以用完整的域名指定。

5.1.2交换空间设定选项

1.cache_swap_low (percent, 0-100)

cache_swap_high (percent, 0-100)

说明:squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平线的对象清除。squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,squid就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。缺省为:

cache_swap_low 90

cache_swap_high 95

2.maximum_object_size

说明:大于该值得对象将不被存储。如果你想要提高访问速度,就请降低该值;如果你想最大限度地节约带宽,降低成本,请增加该值。单位为K,缺省值为:maximum_object_size 4096 KB

5.1.3有关日志的选项

1.cache_access_log

说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。缺省值为:cache_access_log /var/log/squid/access.log

如果你不需要该日志,可以用以下语句取消:cache_access_log none

2.cache_store_log

说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该

记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。缺省路径为:cache_log /var/log/squid/cache.log

如果你不需要该日志,可以用以下语句取消:cache_store_log none

3.cache_log

说明:指定squid一般信息日志的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_log /var/log/squid/cache.log

4.cache_swap_log

说明:该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata)。通常,系统将该文件自动保存在第一个“cache_dir”说定义的顶级目录里,但是你也可以指定其他的路径。如果你定义了多个“cache_dir”,则相应的日志文件可能是这样的:

cache_swap_log.00

cache_swap_log.01

cache_swap_log.02

后面的数字扩展名与指定的多个“cache_dir”一一对应。

需要注意的是,最好不要删除这类日志文件,否则squid将不能正常工作。

5.pid_filename

说明:指定记录squid进程号的日志的完整路径(包括文件的名称及所在的目录)。缺省路径为

pid_filename /var/run/squid.pid

如果你不需要该文件,可以用以下语句取消:pid_filename none

6.debug_options

说明:控制作日志时记录信息的多寡。可以从两个方面控制:section控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是缺省方式)是:debug_options ALL,1

即,对每个方面都作记录,但详细程度为1(最低)。

7.log_fqdn on|off

说明:控制在 access.log 中对用户地址的记录方式。打开该选项时,squid记录客户的完整域名,取消该选项时,squid记录客户的ip地址。注意,如果打开该选项会增加系统的负担,因为squid还得进行客户ip的dns查询。缺省值为:log_fqdn off

5.1.4有关外部支持程序的选项

1.ftp_user

说明:设置登录匿名ftp服务器时的提供的电子邮件地址,登录匿名ftp服务器时要求用你的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名ftp服务器对这一点要求很苛刻,有的甚至会检查你的电子邮件的有效性。缺省值为:ftp_user squid@

2.ftp_list_width

说明:设置ftp列表的宽度,如果设得太小将不能的浏览到长文件名。缺省值为: ftp_list_width 32

3.cache_dns_program

说明:指定dns查询程序的完整路径(包括文件的名称及所在的目录)。缺省路

径为:

cache_dns_program /usr/lib/squid/dns server

4.dns_children

说明:设置dns查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是32,缺省设置为5个。注意,如果你任意的降低该值,可能会使系统性能急剧降低,因为squid主进程要等待域名查询的结果。没有必要减少该值,因为dns查询进程并不会消耗太多的系统的资源。

5.dns_nameservers

说明:指定一个dns服务器列表,强制squid使用该列表中的dns服务器而非使用/etc/resolv.conf文件中定义的dns服务器。你可以这样指定多个dns服务器:dns_nameservers 10.0.0.1 192.172.0.4

缺省设置为:dns_nameservers none

6.unlinkd_program

说明:指定文件删除进程的完整路径。

缺省设置为:

unlinkd_program /usr/lib/squid/unlinkd

7.pinger_program

说明:指定ping进程的完整路径。该进程被squid利用来测量与其他邻居的路由距离。该选项只在你启用了该功能时有用。缺省为:

pinger_program /usr/lib/squid/pinger

8.authenticate_program

说明:指定用来进行用户认证的外部程序的完整路径。squid的用户认证功能我们将在后面的章节讲述。缺省设置为不认证。

5.1.5用户访问控制选项

1.request_size (KB)

说明:设置用户请求通讯量的最大允许值(单位为KB)。如果用户用POST方法请求时,应该设一个较大的值。缺省设置为:

request_size 100 KB

2.reference_age

说明:squid根据对象的LRU(最近最少使用算法)来清除对象,squid依据使用磁盘空间的总量动态地计算对象的LRU年龄。我们用reference_age定义对象的最大LRU年龄。如果一个对象在指定的reference_age内没有被访问,squid 将删除该对象。缺省值为一个月。你可以使用如下所示的时间表示方法。

1 week

3.5 days

4 months

2.2 hours

3.quick_abort_min (KB)

quick_abort_max (KB)

quick_abort_pct (percent)

说明:控制squid是否继续传输被用户中断的请求。当用户中断请求时,squid 将检测

quick_abort 的值。如果剩余部分小于“quick_abort_min”指定的值,squid将

继续完成剩余部分的传输;如果剩余部分大于“quick_abort_max”指定的值,squid将终止剩余部分的传输;如果已完成“quick_abort_pct”指定的百分比,squid将继续完成剩余部分的传输。缺省的设置为:

quick_abort_min 16 KB

quick_abort_max 16 KB

quick_abort_pct 95

5.1.6各类超时设置选项

1.negative_ttl time-units

说明:设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”及"404 Not Found"等一类错误信息。缺省设置为:

negative_ttl 5 minutes

2.positive_dns_ttl time-units

说明:设置缓存成功的dns查询结果的生存时间。缺省为6小时。

positive_dns_ttl 6 hours

3.negative_dns_ttl time-units

说明:设置缓存失败的dns查询结果的生存时间。缺省为5分钟。

negative_dns_ttl 5 minutes

4.connect_timeout time-units

说明:设置squid等待连接完成的超时值。缺省值为2分钟。

connect_timeout 120 seconds

5.read_timeout time-units

说明:如果在指定的时间内squid尚未从被请求的服务器读入任何数据,则squid 将终止该客户请求。缺省值为15分钟。

read_timeout 15 minutes

6.request_timeout

说明:设置在建立与客户的连接后,squid将花多长时间等待客户发出HTTP请求。缺省值为30秒。

request_timeout 30 seconds

7.client_lifetime time-units

说明:设置客户在与squid建立连接后,可以将该连接保持多长时间。

注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果你是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。缺省值为1天,该值太大了,建议根据你自己的情况适当减小该值。

client_lifetime 1 day

8.half_closed_clients on/off

说明:有时候由于用户的不正常操作,可能会使与squid的TCP连接处于半关闭状态,

这时候,该TCP连接的发送端已经关闭,而接收端正常工作。缺省地,squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息,squid就立即关闭该连接。half_closed_clients on

9.pconn_timeout

说明:设置squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。缺省值为120秒。

pconn_timeout 120 seconds

10.ident_timeout

说明:设置squid等待用户认证请求的时间。缺省值为10秒。

ident_timeout 10 seconds

11.shutdown_lifetime time-units

说明:当收到SIGTERM 或者 SIGHUP 信号后, squid将进入一种

shutdown pending的模式,等待所有活动的套接字关闭。在过了

shutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。缺省值为30秒。

shutdown_lifetime 30 seconds

5.1.7管理参数选项

1.cache_mgr

说明:设置管理员邮件地址。缺省为:

cache_mgr root

2. cache_effective_user

cache_effective_group

说明:如果用root启动squid,squid将变成这两条语句指定的用户和用户组。缺省变为squid用户和squid用户组。注意这里指定的用户和用户组必须真是存在于/etc/passwd中。如果用非root帐号启动squid,则squid将保持改用户及用户组运行,这时候,你不能指定小于1024地http_port。

cache_effective_user squid

cache_effective_group squid

3.visible_hostname

说明:定义在返回给用户的出错信息中的主机名。

如: visible_hostname https://www.sodocs.net/doc/7315760177.html,

4.unique_hostname

说明:如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生。

5.1.8其它杂项

1. dns_testnames

说明:设置进行dns查询测试,如果第一个站点解析成功则立即结束dns查询测试。如果你不愿意进行dns查询测试,就不要去掉缺省的设置。

#dns_testnames https://www.sodocs.net/doc/7315760177.html, https://www.sodocs.net/doc/7315760177.html, https://www.sodocs.net/doc/7315760177.html, https://www.sodocs.net/doc/7315760177.html, 2.logfile_rotate

说明:通常,squid会定期的将日志文件更名并打包。比如正在使用的日志文件为access.log,squid会将其更名并打包为access.log.1.gz;过了一定时间后,squid又会将

access.log.1.gz更名为access.log.2.gz并将当前的日志文件更名并打包为access.log.1.gz,以此循环。logfile_rotate所指定的数字即为打包并备份的

文件的数量,当达到这一数目时,squid将删除最老的备份文件。缺省值为10。如果你想手动来进行这些操作,你可以用logfile_rotate 0来取消自动操作。

3.err_html_text

说明:用该语句定义一个字符串变量,可以用%L在返回给用户的错误信息文件中引用。错误信息文件通常在/etc/squid/errors目录中,这是一些用HTML写成的脚本文件,你可以自己修改它。

4.deny_info

说明:你可以定制自定义的拒绝访问信息文件,并且可以和不同的用户列表相关联。当用户被http_access相关规则拒绝时,squid可以向用户显示你自定义的相应的拒绝访问信息文件。语法为:

Usage: deny_info err_page_name acl

比如:

deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys

5.memory_pools on|off

说明:如果你将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。缺省为on.

memory_pools on

6.log_icp_queries on|off

说明:设置是否对ICP请求作日志。如果你的系统负载很大,你可以用off来取消该功能。缺省为:

log_icp_queries on

7.always_direct

说明:该选项允许你指定某些用户类,squid将这些用户类的请求直接转发给被请求的服务器。语法为:

always_direct allow|deny [!]aclname ...

如:直接转发FTP请求可以这样设置:

acl FTP proto FTP

always_direct allow FTP

8.never_direct

说明:与always_direct相反。语法为:

Usage: never_direct allow|deny [!]aclname ...

比如,为了强制除了本地域的其他用户使用代理服务器,你可以这样设置:

acl local-servers dstdomain https://www.sodocs.net/doc/7315760177.html,

acl all src 0.0.0.0/0.0.0.0

never_direct deny local-servers

never_direct allow all

9.icon_directory

说明:指明向用户传送错误信息时所用到的图标文件的目录。缺省路径

为: icon_directory /usr/lib/squid/icons

10.error_directory

说明:指明向用户传送错误信息所用到的错误描述文件的目录。缺省路径为:error_directory /etc/squid/errors

5.2 用户认证设置

缺省的,squid本身不带任何认证程序,但是我们可以通过外部认证程序来实现用户认证。一般说来有以下的认证程序:

1.LDAP认证:你可以访问以下资源来获取更多的有用信息。

https://www.sodocs.net/doc/7315760177.html,/ResearchTriangle/Thinktank/5292/projects/lda

p/

http://home.iae.nl/users/devet/squid/proxy_auth/contrib/ldap_auth.tar .gz

2.SMB认证:可以实现基于NT和samba的用户认证。更多的信息请访问以下资源。

http://www.hacom.nl/~richard/software/smb_auth.html

3.基于mysql的用户认证。

http://home.iae.nl/users/devet/squid/proxy_auth/contrib/mysql_auth.c 4.基于sock5密码用户认证。

https://www.sodocs.net/doc/7315760177.html,/

5.基于Radius 的用户认证。

http://home.iae.nl/users/devet/squid/proxy_auth/contrib/auth.pl

但是我们一般常用的是用ncsa实现的认证和用smb_auth实现的基于NT和samba 的用户认证。下面我们就来讲这两种认证方法的具体实现。

5.2.1 ncsa用户认证的实现

ncsa是squid源代码包自带的认证程序之一,下面我们以squid-2.3.STABLE2

版本为例讲述ncsa的安装和配置。

1.从https://www.sodocs.net/doc/7315760177.html,下载squid源代码包

squid-2.3.STABLE2-src.tar.gz并放到/tmp目录下。

2.用tar解开:

tar xvzf squid-2.3.STABLE2-src.tar.gz

%make

%make install

3.然后,进入/tmp/squid-2.3.STABLE2/auth_modules/NCSA目录。

% make

% make install

编译成功后,会生成ncsa_auth的可执行文件。

4.拷贝生成的执行文件ncsa_auth到/usr/bin目录

cp ncsa_auth /usr/bin/bin

5.修改squid.conf中的相关选项如下所示:

authenticate_program /usr/local/squid/bin/ncsa_auth /usr/bin/passwd 6.定义相关的用户类

acl auth_user proxy_auth REQUIRED

注意,REQUIRED关键字指明了接收所有合法用户的访问。

7.设置http_access

http_access allow auth_user

注意,如果你在改行中指定了多个允许访问的用户类的话,应该把要认证的用户类放在第一个。如下所示:

错误的配置:http_access allow auth_user all manager

8.利用apache携带的工具软件htpasswd在/usr/local/squid/etc下生成密码文件并添加相应的用户信息。一般说来,该密码文件每行包含一个用户的用户信息,即用户名和密码。

用htpasswd生成密码文件passwd并添加用户bye。

htpasswd -c /usr/local/squid/etc/passwd bye

然后重新启动squid,密码认证已经生效。

5.2.2 smb用户认证的实现

国内介绍并使用ncsa实现用户认证的文章不多,而使用smb_auth和samba实现基于NT的用户认证我还没有看到过,下面我们就来看一看在squid中实现基于NT的用户认证。

当前smb_auth的最高版本是smb_auth-0.05,你可以在以下地址下载。当然,squid的源代码包中也包含smb_auth,但是是0.02版的。

http://www.hacom.nl/~richard/software/smb_auth-0.05.tar.gz

smb_auth的主页地址是

http://www.hacom.nl/~richard/software/smb_auth.html。

1.系统需求:

squid2.0以上版本。

安装samba2.0.4以上版本。你并不需要运行samba服务,因为smb_auth只用到了 samba的客户端软件。

2.下载smb_auth-0.05.tar.gz并复制到/tmp.

3.tar xvzf smb_auth-0.05.tar.gz

4.根据你的要求修改Makefile中的SAMBAPREFIX和INSTALLBIN参数。SAMBAPREFIX指定了你的samba安装路径,INSTALLBIN指明了smb_auth的安装路径。我们指定:

SAMBAPREFIX=/usr,INSTALLBIN=/usr/bin.

5.make

6.make install,成功后会在INSTALLBIN指定路径中生成可执行文件

smb_auth.

7.按下列步骤设置你要用于认证的主域控制器:

首先在NETLOG共享目录中建立一个“proxy”文件,该文件只包含一个“allow”的字符串,一般说来,该NETLOG目录位于

winntsystem32Replimportscripts目录中;然后,设置所有你想让其访问squid 的用户和用户组拥有对该文件的读的权力。

8.修改squid.conf中的相关选项如下所示:

authenticate_program /usr/local/squid/bin/smb_auth your_domain_name 9.定义相关的用户类

acl auth_user proxy_auth REQUIRED

注意,REQUIRED关键字指明了接收所有合法用户的访问。

10.设置http_access

http_access allow auth_user

注意,如果你在改行中指定了多个允许访问的用户类的话,应该把要认证的用户类放在第一个。如下所示:

正确的配置:http_access allow auth_user manager all

如果一切正确的话,然后重新启动squid,密码认证已经生效。

说明:smb_auth的调用方法:

1.smb_auth -W your_domain_name

用your_domain_name指定你的域名。smb_auth将进行广播寻找该主域控制器。

2.smb_auth -W your_domain_name -B

如果你有多个网络接口,可以用-B 指定用于广播的网络接口的ip地址。

3.smb_auth -W your_domain_name -U

也可以用-U直接指定该主域控制器的ip地址。

4.smb_auth -W your_domain_name -S share

可以用-S指定一个不同于NETLOG的共享目录。

5.2.3 squid.conf中关于认证的其他设置

1.authenticate_children

说明:设置认证子进程的数目。缺省为5个。如果你处于一个繁忙的网络环境中,你可以适当增大该值。

2.authenticate_ttl

说明:设置一次认证的有效期,缺省是3600秒。

3.proxy_auth_realm

说明:设置用户登录认证时向用户显示的域名。

5.3透明代理的设置

关于透明代理的概念我们已经在第一节将过了,下面我们看一下怎么样在squid 中实现透明代理。

透明代理的实现需要在Linux 2.0.29以上,但是Linux 2.0.30并不支持该功能,好在我们现在使用的通常是2.2.X以上的版本,所以不必担心这个问题。下面我们就用ipchains+squid来实现透明代理。在开始之前需要说明的是,目前我们只能实现支持HTTP的透明代理,但是也不必太担心,因为我们之所以使用代理,目的是利用squid的缓存来提高Web的访问速度,至于提供内部非法ip地址的访问及提高网络安全性,我们可以用ipchains来解决。

实现环境:RedHat6.x+squid2.2.x+ipchains

5.3.1 linux的相关配置

确定你的内核已经配置了以下特性:

[*] Network firewalls

[ ] Socket Filtering

[*] Unix domain sockets

[*] TCP/IP networking

[ ] IP: multicasting

[ ] IP: advanced router

[ ] IP: kernel level autoconfiguration

[*] IP: firewalling

[ ] IP: firewall packet netlink device

[*] IP: always defragment (required for masquerading)

[*] IP: transparent proxy support

如果没有,请你重新编译内核。一般在RedHat6.x以上,系统已经缺省配置了这些特性。

5.3.2squid的相关配置选项

设置squid.conf中的相关选项,如下所示:

http_port 3218

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

说明:

1.http_port 3128

在本例中,我们假设squid的HTTP监听端口为3128,即squid缺省设置值。然后,把所有来自于客户端web请求的包(即目标端口为80)重定向到3128端口。

2.httpd_accel_host virtual

httpd_accel_port 80

这两个选项本来是用来定义squid加速模式的。在这里我们用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,squid就取消了缓存及ICP功能,假如你需要这些功能,这必须设置httpd_accel_with_proxy 选项。

3.httpd_accel_with_proxy on

该选项在透明代理模式下是必须设置成on的。在该模式下,squid既是web请求的加速器,又是缓存代理服务器。

4.httpd_accel_uses_host_header on

在透明代理模式下,如果你想让你代理服务器的缓存功能正确工作的话,你必须将该选项设为on。设为on时,squid会把存储的对象加上主机名而不是ip地址作为索引。这一点在你想建立代理服务器阵列时显得尤为重要。

5.3.3 ipchains的相关配置

ipchains在这里所起的作用是端口重定向。我们可以使用下列语句实现将目标端口为80端口的TCP包重定向到3128端口。

#接收所有的回送包

/sbin/ipchains -A input -j ACCEPT -i lo

#将目标端口为80端口的TCP包重定向到3128端口

/sbin/ipchains -A input -p tcp -d 0.0.0.0/0 80 -j REDIRECT 80

当然在这以前,我们必须用下面的语句打开包转发功能。

echo 1 >; /proc/sys/net/ipv4/ip_forward

小节

开始,我们讨论了代理服务器的概念,代理服务器的分类;然后,我们把注意力集中在squid,讲述了如何安装和配置squid;最后我们讲了一些squid配置中的高级话题,即实现用户认证的两种方法,透明代理的实现等。当然,还有一些

高级话题本章没有讲到,如代理阵列的实现,加速模式的运用等等。但是,我们不可能把所有东西都讲完讲全,希望读者能举一反三,自己去摸索,去尝试。

Linux下的高可用性方案研究

Linux下的高可用性方案研究 保证持续稳定的系统运行时间变得越来越重要,而传统意义上的小型机系统让普通用户望而却步。用户需要的是更高的可用性以及更低的成本。高可用性(HA)技术能自动检测服务器节点和服务进程错误、失效,并且当发生这种情况时能够自动适当地重新配置系统,使得集群中的其他节点能够自动承担这些服务,以实现服务不中断。 Cluster应用可分为三方面:High-Availability(HA)(高可用性集群)、Load Balance(负载均衡集群)、Scientific(科学集群)。在集群的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行群集,它可以在节点之间执行负载均衡。而本文则侧重于介绍基于Linux的HA解决方案方面的问题。 基于LVS的HA方案 Linux要进入高端市场就必须在这方面有相应的措施,所以许多公司都在这方面加大了研究力度。现在,我们可以使用一些现存的软件去构筑具有高可用性的LVS系统。下面列出两种方案,以供参考。 [方案一]mon+heartbeat+ fake+coda 我们可以使用“mon”、“heart beat”、“fake”和“coda”四个软件来构筑具有高可用性的Virtual Server(虚拟服务器)。“mon”是一个大众化的资源管理系统,用来监控网络上的服务器节点和网络服务。“heartbeat”实现在两台计算机间通过在串行线上使用UDP协议传送“心跳信息”。“Fake”是一个使用ARP欺骗的方法来实现IP接管。 当服务器故障时,处理过程如下:“mon”进程运行在负载均衡器上,负责监测整个集群的服务器节点和服务进程。在配置文件“fping.monitor”中写入要检测服务器节点,然后“mon”进程将会隔t秒检查一下相应的服务器节点是否还活着。 另外相关的服务监视器也要做相应的配置,这样“mon”进程将每m秒检测一下所有节点的相应服务进程。例如:http.monitor:用于配置监控http服务;ftp.monitor:用于配置监控FTP服务;以此类推。当配置完成后,某个服务器节点失效或重新生效、服务进程失效或重新生效时都会发送一个通告信息,因此,负载均衡器能够知道服务器节点是否能接受服务。 现在,负载均衡器成为了整个系统的单点失效。为了防止这一现象,我们必须安装一个负载均衡器的备份服务器。“fake”软件实现当负载均衡器失效时,备份服务器自动接管IP地址,并继续服务。而“heartbeat”则随时根据负载均衡器的状态自动激活/关闭备份服务器上的“fake”进程。在负载均衡器和备份服务器上都运行着一个“heartbeat”进程,它们通过串行线周期性地发送“I'm alive ”消息。如果备份服务器在一个预定时间内接收不到来自负载均衡器的“I'm alive”信息时,将自动激活“fake”进程接管负载均衡器的IP地址,并开始提供负载均衡服务;而当再次收到来自负载均衡器的“I'm alive ”消息时,备份服务器将自动将“fake”进程关闭,释放出它接管的服务器,负载均衡器重新开始工作。

squid代理服务器泄露客户ip和服务器信息的解决

squid代理服务器泄露客户ip和服务器信息的解决 在局域网通过透明代理访问外部的web服务器时, 在web服务器端, 通过header HTTP_X_FORWARDED_FOR 可以知道代理服务器的服务器名以及端口, 通过HTTP_VIA可以知道客户的内部ip,这会带来一些安全问题,并且某些论坛会发现用的是代理访问,怎么让squid隐藏这些信息呢. 通过研究squid的源代码,发现在/etc/squid/squid.conf中添加2行: header_access Via deny all header_access X-Forwarded-For deny all 就可以把它关闭(king9413注:新版本命令为:via off forwarded_for of) 要去掉其他的header,也可以照此操作: Accept HTTP_ACCEPT Accept-Charset HTTP_ACCEPT-CHARSET Accept-Encoding HTTP_ACCEPT-ENCODING Accept-Language HTTP_ACCEPT-LANGUAGE Accept-Ranges HTTP_ACCEPT-RANGES

Age HTTP_AGE Allow HTTP_ALLOW Authorization HTTP_AUTHORIZATION Cache-Control HTTP_CACHE-CONTROL Connection HTTP_CONNECTION Content-Base HTTP_CONTENT-BASE Content-Disposition HTTP_CONTENT-DISPOSITION Content-Encoding HTTP_CONTENT-ENCODING Content-Language HTTP_CONTENT-LANGUAGE Content-Length HTTP_CONTENT-LENGTH Content-Location HTTP_CONTENT-LOCATION Content-MD5 HTTP_CONTENT-MD5 Content-Range HTTP_CONTENT-RANGE Content-Type HTTP_CONTENT-TYPE Cookie HTTP_COOKIE Date HTTP_DATE ETag HTTP_ETAG Expires HTTP_EXPIRES From HTTP_FROM Host HTTP_HOST If-Match HTTP_IF-MATCH If-Modified-Since HTTP_IF-MODIFIED-SINCE

linux系统tuxedo安装指导

[置顶]Linux系统下Tuxedo安装 Linux系统下Tuxedo安装 1. 在Linux 环境中新建一个用户tuxdeo/tuxdeo,从网上下载支持该Linux系统的tuxedo软件包。 2. 将文件通过ftp ,U盘或其他方式将软件包传到该用户的目录下 /home/tuxedo/tuxedo111120_32_Linux_01_x86.bin 执行sh tuxedo111120_32_Linux_01_x86.bin –i console命令开始安装tuxedo 3. 安装开始进入如下界面,按Enter键继续: 4. 选择安装设置,选择1- Full Instll,完全安装模式,按Enter键继续。 5. 选择tuxedo安装所放的路径/home/tuxedo/oracle 6. 确定安装目录,还是要修改安装目录,选择2 ,选择现在的目录。 7. 显示之前选择的安装信息,按Enter键继续。 8. 准备安装,按Enter键继续。 9. 安装中出现,Configure tlisten Service,输入密码tuxedo 10. 选择安装SSL,选择1,按Enter键继续 11. 设置LDAP LDAP Service Name:Ldapser

LDAP PortID: 123456 LDAP BaseObject: Ldapbsoj LDAP Filter File Location: 按Enter 键继续 12. 安装成功,按Enter键继续 13. 接下来要用例子检查服务的联通性,在装完tuxedo的目录下有个文档里有tuxedo例子 /home/tuxedo/oracle/tuxedo11gR1/samples 1). 在目录/home/tuxedo/oracle/tuxedo11gR1/下有个tux.env文件,将该文件拷贝到该用户根目录下的 .bash_profile文件中,用命令source .bash_profile使环境变量生效,再注销系统,重新登陆。 2). 在/home/tuxedo/oracle/tuxedo11gR1/ 目录下新建一个目录

Squid代理服务器实验报告

Squid代理服务器实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: 任务一:实现正向代理 任务二:实现透明代理 任务三:实现反向代理 实验拓扑图参考课本P215,图10-4,完整实现以上功能。 实验目的和要求: 提示1、在启动squid服务程序之前需要先确认Linux主机具有完整的域名,如果没有可以在hosts文件中进行设置 提示2、squid服务器第一次启动前的初始化工作可以使用squid –z命令手工完成,如不手工进行,squid启动脚本也会自动完成初始化工作。 实验详细步骤: 1.在Linux 操作系统中查看是否已经安装了Squid 服务: 【root@RHEL4~】#rpm –q squid Squid-2.5.STABL E6-3 这表明系统已经安装了Squid 服务。 2.启动Squid 服务 启动和重新启动Squid 服务的命令如下: //启动Squid服务 【root@RHEL4~】#service squid start 启动squid:【确定】 //重新启动Squid 服务 【root@RHEL4~】#service squid restart 停止squid:【确定】 启动squid:【确定】 配置Squid服务器 一. squid.conf配置 激活squid. 1). 开启squid 运行# squid -k parse命令即可 2). 初始化cache目录. 在第一次启动squid服务之前执行# squid -z 3). 启动squid服务

# service squid start 4). 停止squid 最安全的停止squid的方法是使用squid -k shutdown命令: # squid -k shutdown 5). 重配置运行中的squid进程 6). 滚动日志文件 二. 透明代理 1. 配置Proxy 主机: 1)更改squid配置文件中的下列指令: [root@test root]# vi /etc/squid/squid.conf httpd_accel_host virtual # 告诉web加速器,针对所有的URL httpd_accel_port 80 # 告诉web加速器,要监听的端口是80! httpd_accel_with_proxy on # 这个很重要!因为配置httpd_accel_host 之后,cache 的配置httpd_accel_uses_host_header on 2)在squid 2.6,更改squid配置文件中的一个指令: http_port 192.168.63.50:3128 transparent #192.168.63.50 就是squid服务器的地址[root@test root]# squid -k reconfigure 2. 配置NAT 主机的port map : 3. 配置转发 4. 配置客户端 三.反向代理: 1.Squid的配置如下: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_single_host off httpd_accel_uses_host_header on 2.然后设置设置反响代理需要的域名解析(Internet用户通过这里解析三个网站的域名)如下: https://www.sodocs.net/doc/7315760177.html, 202.102.240.74 https://www.sodocs.net/doc/7315760177.html, 202.102.240.74 https://www.sodocs.net/doc/7315760177.html, 202.102.240.74 3.使三个域名都指向反向代理服务器的IP地址202.102.240.74。 4.设置反向代理所需要的DNS入口信息(即设置内部DNS,仅仅是squid在内部使用,Internet用户不可见)。有两种方法可以设置内部DNS,使用内部DNS 服务器来解析或者使用/etc/hosts文件来实现。 5.使用内部DNS服务器的资源记录如下: https://www.sodocs.net/doc/7315760177.html, IN A 192.168.62.2 https://www.sodocs.net/doc/7315760177.html, IN A 192.168.62.3 https://www.sodocs.net/doc/7315760177.html, IN A 192.168.62.4 如果使用/etc/hosts文件来实现内部DNS(编译时应使用disable internal dns选项),编辑/etc/hosts文件添加如下条目:192.168.62.2 https://www.sodocs.net/doc/7315760177.html, 192.168.62.3 https://www.sodocs.net/doc/7315760177.html, 192.168.62.4 https://www.sodocs.net/doc/7315760177.html,

单机运行多个Squid代理服务

多代理(SQUID)同时运行的配置方法 作成日期:2012/8/24 多代理用途: 1、HTTP反向加速; 2、权限控制部分客户端,而权限控制选项是全局设置时; 总之,一般的代理服务器运行一个即可,当有特殊要求的时候,才有此需要,HTTP反向代理本文没有涉及,仅是为了权限控制,一台机器同一网卡运行了2个Squid,对于HTTP反向代理,有兴趣者可自行研究配置。 环境: 1、Cent OS 5 2、Squid (Version 2.6.STABLE21) 3、DELL R710 配置: 在配置多Squid同时运行时,我的服务器已经安装配置好的Squid,并正常运行,如果你的服务器还不具备此条件,请先配置好Squid,并确保可以正确运行。 1、复制一份Squid .conf配置文件 2、编辑新文件,配置如下的选项与第一个Squid区分开 3、初始化缓存目录 命令如下:Squid –z –f 新的配置文件 注意,“-f”参数后面一定要写上新配置文件,一般设定2个Squid同时运行时,都是这一步没有处理或者处理错误,比如没有加“-f”参数的话,就会初始化原有的Squid缓存目录而不是新Squid 缓存目录。 4、运行第2个代理服务器 命令如下:Squid –D –f 新的配置文件

维护: 至此,服务器上已经运行两个代理服务器,使用不同的端口,就会通过不同代理服务器进行网络连接,设定配置文件,可为客户端设定不同的网络权限。 1、关于配置文件的更新后Reload 如更新第1个代理,使用默认系统命令:squid –k reconfigure 如更新第2个代理,squid –k reconfigure –f 新的配置文件 2、第2个代理的自动启动 当系统重新时,想第2个代理随机启动,请参照以下脚本(第1个代理启动,可以在系统中设定): #! /bin/sh echo "Start special squid” #输出一些提示信息 squid -D -f /etc/squid/squidnew.conf #我的新配置文件在/etc/squid下面 echo "Please wait ...." #输出一些提示信息 sleep 5 #等待5秒,给Squid启动时间,实际可能不需要怎么久cd /var/cache/squidnew/ #进入缓存目录,我的PID文件放在这里 if [ -s squid.pid ]; #判断PID文件是否存在,存在squid启动成功,否则失败 then echo "Squid start success" else echo "Squid start failed" fi exit 0 将该脚本放置到启动目录,自行启动即可,另外我不是自行启动,因有时候不运行,如自行启动,可将判断的部分删除,因为系统启动,可能看不到脚本提示信息。 关于关闭Squid,请使用多次的 squid –k shutdown 命令关闭服务, 同时使用ps –ef |grep squid 判断代理服务是否全部关闭完成。 调试过程如有问题,使用tail –f /var/log/messages 排错也是个不错的办法。 备注: 另外,系统究竟可以运行多少个Squid?没有测试,猜测如CPU足够快、内存足够大,应该可以运行很多副本。 以上

linux 环境 部署 ldap

OpenLDAP 打包后可能会运行的很好(或者产生不可知的后果)。我只求方便??如果你的其他版本能够提供一个容易的方法,就用它好了。RPM 也可从https://www.sodocs.net/doc/7315760177.html,处获得,https://www.sodocs.net/doc/7315760177.html,详细地列出了所有需要的附带软件包。 当然Debian运行的也很好。apt-get做这个工作也不错;聪明的 bit能够找到软件包的名字。 Debian用户希望ldap-utils;slapd,即OpenLDAP;以及libdb4.1获得Sleepycat DB。这三个组件足够你用的了。apt-get可带你完成最小配置,并且自动启动slapd,即LDAP服务器监控程序。 从源代码安装 基本安装至少需要两个tarball: ?Berkeley Sleepycat DB ?OpenLDAP tarball Berkeley DB必须在OpenLDAP之前安装。OpenLDAP没有它不能建立。(如何安装Berkeley DB请看Resources) OpenLDAP tarball 不足2兆,那就是说即使我们拨号下载,也是很轻松的。本文中使用的稳定版为openldap-stable-20030709.tgz。我喜欢将它放在 /usr/src/目录下,并在此解包: root@windbag:/usr/src# tar xfz openldap-stable-20030709.tgz 这就创建了openldap-2.1.22 目录: root@windbag:/usr/src# cd openldap-2.1.22 现在就有了README、INSTALL、 LICENSE、 ANNOUNCEMENT、以及COPYRIGHT 文档。先花点时间看看这些文档,看他们里面有什么重要信息。要快速查看编译选项,请键入: root@windbag:/usr/src# ./configure --help 这个阅读相当吸引人,它的默认项标记清楚,选项能够自我说明。现在我们来看看默认项。输入下列三个命令: # ./configure # make depend # make 每个命令输入完都会出现许多东西;放心的等待吧。等他们都完成之后,运行简单的内建测试脚本对他们进行校验: # make test 如果出错的话,我建议你放弃它,另外向你推荐https://www.sodocs.net/doc/7315760177.html, (见 Resources)。如果运行良好,最后一个步骤就是真正的安装新创建的二进制文件和man界面。在OpenLDAP根目录下运行: # make install 请注意'make install'的输出;它包含许多有用信息。为了详细阅读,将它导入文件内: # make install | tee openldap-install.txt 配置slapd.conf 这是用于我们新OpenLDAP 服务器的主要配置文件。它可以放在任何层数的虚拟目录内??我个人喜欢在安装软件后运行updatedb,这样我能迅速的找到需要的东西。在我的Libranet 系统上,它是/etc/ldap/slapd.conf。 小心保护该文件。最好备份一下。原来的文件包含有用的默认值。为了安全起见,默认许可为600(只有root用户才能读写该文件)。 slapd.conf 定义了三种类型的信息:整体设置,与指定后端相关的设置,与指定数据库相关的设置。这个bit相当重要,如果运行正确的话能够帮你减少麻烦:后端和数据库指令优先于整体设置,数据库指令优先于后端指令。 空白行和注释可以忽略。以空白开头的行是上一行的继续??这个小技巧可让你浏览时不至于毫无头绪。 更多的空白可用于指令中:指令可以有参数,甚至多个参数。这些参数使用空白隔开。带有空白的参数必须附上双引号:如"loud argument." 包含双引号或者反斜线符号的参数退出时必须使用反斜线:如

tuxedo负载均衡和多域测试附件

11. 附录 11.1 simpsvrUp #include #include "atmi.h" void TOUPPER(TPSVCINFO *rqst) { int i; char *buf; long sendlen,rcvlen; for(i = 0; i < rqst->len-1; i++) rqst->data[i] = toupper(rqst->data[i]); userlog("From Client ReqId[%s]",rqst->data); sendlen = rqst->len; if((buf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) { (void) fprintf(stderr,"Error allocating send buffer\n"); tpterm(); exit(1); } (void) strcpy(buf, rqst->data); if (tpcall("TOLOWER", (char *) buf, 0, (char **)&buf, &rcvlen, (long)0 ) == -1) { userlog( "TPCALL ERROR CODE %d message[%s]", tperrno, tpstrerror(tperrno)); (void) fprintf(stderr, "Tperrno = %d\n", tperrno); tpfree( buf); tpreturn(TPSUCCESS, 0, buf, 0L, 0); } userlog("Call Remote ToLower Success [%s]", buf); tpreturn(TPSUCCESS, 0, buf, 0L, 0); } 11.2 simpsvrLow #include #include "atmi.h" void TOLOWER(TPSVCINFO *rqst) { int i; for(i = 0; i < rqst->len-1; i++) rqst->data[i] = tolower(rqst->data[i]); userlog("From Client ReqId[%s]",rqst->data); printf("In ToLower");

squid 代理服务器 用户认证配置实例

squid 代理服务器用户认证配置实例 如果你以前没有加过认证,那么不必重新安装,只需把你下载的squid文件重新编译下 下面附安装实例: 我这里安装的是最新的squid 3.0 进入下载的squid源码目录,重新编译squid,并声明支持NCSA认证 ./configure --enable-basic-auth-helpers="NCSA" make 然后进入下面这个目录 cd helpers/basic_auth/NCSA 拷贝生成的执行文件ncsa_auth到/usr/local/squid/bin目录 cp ./ncsa_auth /usr/local/squid/bin 编辑squid.conf 加入 auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd aclpasswderproxy_auth REQUIRED http_access allow passwder http_access deny all 如果不想进行用户认证,去掉上述四行,换成 http_access allow all 利用apache携带的工具软件htpasswd在/usr/local/squid/etc下生成密码文件并添加相应的用户信息 /usr/local/bin/htpasswd -c /usr/local/squid/etc/passwd squid 输入密码并确认 如果你的htpasswd不在这个目录,那你进入/etc/local 使用 find . -name htpasswd 查询一下你的文件在那里啦

tuxedo安装手册

Tuxedo安装 我用的是radhat5.0 配置环境: 1,首先要创建一个用户(我这里是tuxedo,密码123) 2,防火墙什么的必须要关 配置:在根目录里面打setup 3,要改一个主机名 主机名改动配置文件:/etc/hosts 直接添加一个主机名(我这里是info) 命令:vim /etc/hosts /etc/sysconfig/network 把文件直接修改成info 命令:vim /etc/sysconfig/network 4,需要安装gcc环境这个可能有依赖包,但是耐心点一定能装完, 知道打rpm –ivh gcc*出现下面的界面就说明安装好了

5;把tuxedo111120_32_Linux_01_x86.bin 文件传到/home/tuxedo文件下 记得改一下权限chmod 777 tuxedo111120_32_Linux_01_x86.bin 传完之后reboot启动一下系统 Tuxedo安装 然后用tuxedo用户登录(这里必须用tuxedo用户安装这个文件) 执行:./ tuxedo111120_32_Linux_01_x86.bin –i console 第一项是选择语言:1 这个是按enter继续 按1选择完全安装, 按1选择创建一个oracle目录 下面是写路径/dev/tuxedo/tux -------------tux是我创建的这个文件夹名字

这个选择2,确定选择创建的文件路径 下面选择y,确认 然后就开始安装了 这个是为tuxedo创建密码我写的是tuxedo 这个地方是说你的服务器是否要安装SSL,我们就不安装了选择2(NO)就可以了,如果你需要SSL 支持你可以选择,这里我就省略了。。。。 这样tuxedo就算安装好了 环境变量配置 进入配置文件cd /home/tuxedo/tux/tuxedo11gR1 下面我们为tuxedo成功启动做一个服务 在/home/tuxedo/tux/tuxedo11gR1 目录下创建一个目录 Mkdir Myserver 将/home/tuxedo/tux/tuxedo11gR1/samples/atmi/simpapp中的所有文件拷贝到Myserver目录下cp samples/atmi/simpapp/* Myserver cp ./tux.env ./Myserver/ 进入Myserver文件夹 Cd Myserver 编译vim tux.env

squid三种代理方式原理与配置

一、代理分类 1)、传统代理 适用于内网访问外网,客户端需要设置代理IP和端口 2)、透明代理 适用于内网访问外网,客户端只需要设置网关,网关就是代理服务器

3)、反向代理 适用于外网访问内网,可以实现负载均衡

二、传统代理搭建及配置 1、修改主配置文件 vim /etc/squid/squid.conf 将http_access deny all 改成http_access allow all 2、开启服务 squid 3、客户端设置——浏览器设置代理 4、测试 客户端访问后,在web服务器查看访问记录,确认访问IP 三、透明代理配置 1、修改主配置文件 vim /etc/squid/squid.conf 将http_access deny all 改成http_access allow all 将http_port 3128 改成 http_port 内网IP:3128 transparent 2、重启服务 killall -9 squid && squid 3、编写防火墙规则 开启端口重定向 firewall——定义内外网卡所在区域——对内网卡所在区域设置端口重定向——将80端口重定向到本机3128端口 4、客户端设置——网关指向代理服务器内网卡IP

5、测试 客户端访问后,在web服务器查看访问记录,确认访问IP 四、反向代理配置 1、修改主配置文件 vim /etc/squid/squid.conf 将http_access deny all 改成http_access allow all http_port 192.168.1.88:80 accel vhost cache_peer 192.168.1.80 parent 80 0 originserver name=sina cache_peer 192.168.1.80 parent 80 0 originserver name=baidu ## cache_peer 指定后端服务器地址,80 为后端服务端口,0 为 ICP 端口号(多个Squid 时用),originserver 指定资源服务器,name 指定一个别名 2、重启启服务 killall -9 squid && squid 3、测试 客户端访问代理服务器外接口IP后,在web服务器查看访问记录,确认访问IP

linux下 tuxedo 安装说明

Tuxedo 学习笔记 看了很多网站的linux 下的安装说明,但是照做,不一定就能成功 这次,亲自实践了一把 做个总结 1,有两个环节要注意,一个是. bash_profile ,这个文件隐藏在你的用户根目录下比如用户是tuxedo,它就在/home/tuxedo/ 下,ls .bash_profile 可以看到 Ls -all 也可以看到这个文件 用vi .bash_profile (注意前面有个小点哦) 里面是相关的环境配置 下面是.bash_profile 文件

下面简单一下安装过程 操作系统是在fedoro 8 上(Linux zc 2.4.22)的,声明一下,fedoro 10 上报错,(内核2.6 上的) 安装文件名:tuxedo81_linux.bin 命令:sh tuxedo81_linux.bin -i console 然后就是稍微等待几秒钟,叫你选择English ,选择1 继续 Enter 只到叫你输入tuxedo 的密码 然后输入KEY ,lic,txt 这个等安装好了,在搞吧,很简单 Cp ,lic,txt /tuxedo8.1/udataobj/ 拷到这个目录下面就OK了

到这,tuxedo 算是安装完了,下面是配置,说实话,配置比安装难啊 先看tmadmin 有没用,如果有用,说明你的key 安装正确了 下面就是配置ubbsimple 了 建议把atmi 下面的例子拷到tuxedo8.1下面来,这样在ubbsimple 里面就好配置了 看下ubbsimple 文件 带# 的先不管了 # (c) 2003 BEA Systems, Inc. All Rights Reserved. #ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.5 $" #Skeleton UBBCONFIG file for the TUXEDO Simple Application. #Replace the items with the appropriate values. *RESOURCES IPCKEY 123457 这个值是唯一的 取值在3万到26万之间,且必须是唯一的(32768-262143) DOMAINID simpapp 管理域的标识符,随便取,没实在意义 MASTER simple site1,site2 主节点,用于多机环境中,起作用,site2备用MAXACCESSERS 10 MAXSERVERS 5 MAXSERVICES 10 MODEL SHM # 单台主机,MP多台主机 LDBAL N BLOCKTIME 6 #客户端等待服务响应的最长时间6*10 60秒 *MACHINES DEFAULT: 这个强烈要求.bash_proflie 里面一定要一致 APPDIR="/home/tuxedo/tuxedo8.1/simpapp" 应用程序路径 TUXCONFIG="/home/tuxedo/tuxedo8.1/simpapp/tuxconfig" tuxconfig 路径 TUXDIR="/home/tuxedo/tuxedo8.1" tuxedo 安装的路径 zc是用户名 在命令下可以用hostname 可以看出来 zc LMID=simple

Tuxedo_安装

1.1.1建立tuxedo用户和安装主目录 1.创建tuxedo用户 创建tuxedo 帐号和组: groupadd dba useradd -c tuxedo -G dba tuxedo passwd tuxedo 2.创建tuxedo 目录 su – root mkdir -p /home/tuxedo chown -R tuxedo:dba /home/tuxedo 1.1.2建立oracle用户和安装主目录 1.创建oracle用户 创建oracle 帐号和组: su – root groupadd dba useradd -c oracle -G dba oracle passwd oracle 2.创建oracle 目录 su – root mkdir -p /home/oracle/ chown -R oracle:dba /home/oracle 1.1.3设置tuxedo用户环境变量 设置Tuxedo用户的.bash_profile文件 1.1.4设置oracle用户环境变量 设置Tuxedo用户的.bash_profile文件 1.2Tuxedo for linux安装过程 1.2.1安装过程 [tuxedo@localhost ~]$ sh tuxedo10gR3_64_Linux_01_x86.bin -i console

Preparing to install... Extracting the JRE from the installer archive... Unpacking the JRE... Extracting the installation resources from the installer archive... Configuring the installer for this system's environment... Launching installer... Preparing CONSOLE Mode Installation... ================================================================== ============= Choose Locale... ---------------- ->1- English CHOOSE LOCALE BY NUMBER: 1 ================================================================== ============= Tuxedo 10gR3 (created with InstallAnywhere by Macrovision) ------------------------------------------------------------------------------- ================================================================== ============= Introduction ------------

squid代理服务器、iptables防火墙(安全)的设置和各自的功能

Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP、FTP、Gopher、SSL、WAIS等协议的代理; 设置简单,只需对配置文件稍稍改动就可使代理服务器运转起来。此外,Squid具有页面缓存功能,它接受用户的下载申请,并自动处理所下载的数据。 前期准备 Squid对硬件的要求是: 内存不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI 硬盘,对CPU的要求不高,400MHz以上即可。笔者所管理的代理服务器是Inter2150,安装了Red Hat Linux 7.2,安装时就带有Squid。有两块网卡,一块eth0配外部地址(比如211.88.99.66),一块eth1配内网地址(比如192.168.5.1)。如果安装了Gnome或其他图形界面,就可以在netconfig 中给两块网卡配置IP地址,不然的话,可在/etc/sysconfig/network-script路径下更改文件ifcfg-eth0和ifcfg-eth1。 首先编辑ifcfg-eht0,有以下几项: DEVICE=eth0 (表示用哪块网卡) IPADDR=211.88.99.66 (设置该网卡的IP地址) NETMASK=255.255.255.252 (设置子网掩码) 同样编辑ifcfg-eth1,然后运行命令network restart就可以使配置生效了。对eth0、eth1进行配置后,可以用ifconfig命令来查看是不是配置成功。 如果服务器只有一张网卡,也不用担心,Linux可以在一块网卡上绑定多个IP地址。在图形界面下配置很简单,不赘述。如果在文本状态下配置,可以将ifcfg-eth0复制并命名为ifcfg-eth0:1,把它完全当成两块网卡来配就可以了。 Squid的安装 1. 安装Linux 安装Linux在硬盘分区时要注意,最好不要让系统自己分区,而是手动分区。通常,在Linux 系统中有且仅有一个交换分区(在文件系统形式中选择Linux swap),它用做虚拟内存,建议将交换分区的大小设置为内存的两倍。当硬盘的大小超过了8G,要再建立一个128M(稍稍大一点,不会出错)的boot分区,这是为了避免将系统内核文件放到1024磁道以外,如果将boot 作为root分区的一个子目录,内核文件就会安装在root分区的任何地方。因为要用做代理服务器,建议再分一个分区“var”,作为Squid的缓冲区,所以根据磁盘大小尽量分配大一点,最后将硬盘的剩余空间全部分给root分区。 2. 安装Squid 新手安装Squid,建议在安装Linux时就选中Squid,它并不是默认选中项,而且也不在选择的大类中,要在详细列表中查找。如果没有安装,又不想重装系统,可以从https://www.sodocs.net/doc/7315760177.html, 下载Squid软件。 Squid代理服务器的设置

Tuxedo_linux安装

Tuxedo安装 1.在Linux 环境中新建一个用户tuxdeo/tuxdeo; Useradd tuxedo 2.执行如下命令开始安装; chmod 755 tuxedo12110_64_linux_5_x86.bin ./tuxedo12110_64_linux_5_x86.bin –i console 3.安装开始进入如下界面,按Enter键继续: 4.选择安装设置,选择1- Full Instll,完全安装模式,按Enter键继续。 5.选择tuxedo安装所放的路径 /home/tuxedo/ 6.确定安装目录,还是要修改安装目录,选择2 ,选择现在的目录。 7.显示之前选择的安装信息,按Enter键继续。 8.准备安装,按Enter键继续。 9.安装中出现,Configure tlisten Service,输入密码 tuxedo 10.选择安装SSL,选择1,按Enter键继续 11.设置LDAP LDAP Service Name:Ldapser LDAP PortID: 123456 LDAP BaseObject: Ldapbsoj LDAP Filter File Location: 按Enter 键继续 12.安装成功,按Enter键继续 13.接下来要用例子检查服务的联通性,在装完tuxedo的目录下有个文档里有tuxedo例子 /home/tuxedo/tuxedo12.1.1.0/samples 1).在目录/home/tuxedo/tuxedo12.1.1.0/下有个tux.env文件,将该文件拷贝到该用户根 目录下的 .bash_profile文件中,用命令source .bash_profile使环境变量生效。 TUXDIR=/home/tuxedo/tuxedo12.1.1.0; export TUXDIR JAVA_HOME=$TUXDIR/jre; export JAVA_HOME JVMLIBS=$JAVA_HOME/lib/amd64/server:$JAVA_HOME/jre/bin PATH=$TUXDIR/bin:$JAVA_HOME/bin:$PATH; export PATH COBCPY=:$TUXDIR/cobinclude; export COBCPY COBOPT="-C ANS85 -C ALIGN=8 -C NOIBMCOMP -C TRUNC=ANSI -C OSEXT=cbl"; export COBOPT SHLIB_PATH=$TUXDIR/lib:$JVMLIBS:$SHLIB_PATH; export SHLIB_PATH LIBPATH=$TUXDIR/lib:$JVMLIBS:$LIBPATH; export LIBPATH LD_LIBRARY_PATH=$TUXDIR/lib:$JVMLIBS:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH WEBJAVADIR=$TUXDIR/udataobj/webgui/java; export WEBJAVADIR TUXCONFIG=/home/tuxedo/tuxedo12.1.1.0/myapp/tuxconfig; export TUXCONFIG 2). 在/home/tuxedo/tuxedo12.1.1.0 目录下新建一个目录 [tuxedo@localhost tuxedo11gR1]$mkdirmyapp 3). 将/home/tuxedo/tuxedo12.1.1.0/samples/atmi/simpapp中的所有文件拷贝到myapp目录下

squid反向代理设置功略

代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式,使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,使内部网主机免受外部网主机的攻击。但是,如果想让互联网上的主机访问内部网的主机资源(例如:Web 站点),又想使内部网主机免受外部网主机攻击,一般的代理服务是不能实现的,需要使用反向代理来实现。本文将详细介绍反向代理服务的概念以及如何利用反向代理服务器提高WEB服务器的性能和安全性。一.反向代理的概念什么是反向代理呢?其实,反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。 典型的结构如下图所示: Web服务器加速(反向代理)是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对浏览器用户,而针对一台或多台特定Web服务器(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将ReverseProxyCache设备放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是ReverseProxyServer的IP地址,而非原始Web服务器的IP地址,这时ReverseProxyServer 设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量

Web服务工作量被卸载到反向代理服务上。不但能够防止外部网主机直接和web服务器直接通信带来的安全隐患,而且能够很大程度上减轻web服务器的负担,提高访问速度。 二.反向代理和其它代理的比较下面将对几种典型的代理服务作一个简单的比较。 在网络上常见的代理服务器有三种: 1.标准的代理缓冲服务器一个标准的代理缓冲服务被用于缓存静态的网页(例如:html 文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。 2.透明代理缓冲服务器透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables 或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet 服务器提供商)特别有用。 3.反向代理缓冲服务器反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。 三.反向代理工作原理

相关主题