当前位置:文档之家› 使用Nginx的proxy_cache缓存功能取代Squid

使用Nginx的proxy_cache缓存功能取代Squid

使用Nginx的proxy_cache缓存功能取代Squid
使用Nginx的proxy_cache缓存功能取代Squid

使用Nginx的proxy_cache缓存功能取代Squid

Nginx从0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx模块,可以清除指定URL的缓存。

Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存),已经可以完全取代Squid。我们已经在生产环境使用了Nginx 的proxy_cache 缓存功能超过两个月,十分稳定,速度不逊于Squid。

在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。

1、Nginx 负载均衡与缓存服务器在Linux 下的编译安装:

ulimit -SHn 65535

wget ftp://https://www.doczj.com/doc/f813681739.html,/pub/software/programming/pcre/pcre-8.00.tar.gz

tar zxvf pcre-8.00.tar.gz

cd pcre-8.00/

./configure

make && make install

cd ../

wget https://www.doczj.com/doc/f813681739.html,/files/ngx_cache_purge-1.0.tar.gz

tar zxvf ngx_cache_purge-1.0.tar.gz

wget https://www.doczj.com/doc/f813681739.html,/download/nginx-0.8.32.tar.gz

tar zxvf nginx-0.8.32.tar.gz

cd nginx-0.8.32/

./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --

prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module make && make install

cd ../

2、/usr/local/webserver/nginx/conf/nginx.conf 配置文件内容如下:

user www www;

worker_processes 8;

error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;

pid /usr/local/webserver/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535;

events

{

use epoll;

worker_connections 65535;

}

http

{

include mime.types;

default_type application/octet-stream; charset utf-8;

server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 300m; sendfile on;

tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

client_body_buffer_size 512k; proxy_connect_timeout 5;

proxy_read_timeout 60;

proxy_send_timeout 5;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.1;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

proxy_temp_path /data0/proxy_temp_dir;

#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天清理一次缓存,硬盘缓存空间大小为30GB。

proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d

max_size=30g;

upstream backend_server {

server 192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;

server

{

listen 80;

server_name https://www.doczj.com/doc/f813681739.html, 192.168.8.42;

index index.html index.htm;

root /data0/htdocs/www;

location /

{

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache cache_one;

#对不同的HTTP状态码设置不同的缓存时间

proxy_cache_valid 200 304 12h;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

proxy_cache_key $host$uri$is_args$args;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://backend_server;

expires 1d;

#用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。

location ~ /purge(/.*)

{

#设置只允许指定的IP或IP段才可以清除URL缓存。

allow 127.0.0.1;

allow 192.168.0.0/16;

deny all;

proxy_cache_purge cache_one $host$1$is_args$args;

}

#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。

location ~ .*\.(php|jsp|cgi)?$

{

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://backend_server;

}

access_log off;

}

}

3、启动Nginx:

/usr/local/webserver/nginx/sbin/nginx 4、清除指定的URL缓存示例:

nginx负载均衡宕机配置

1.摘要 (1)结论 详细描述了nginx记录失效节点的6种状态(time out、connect refuse、500、502、503、504,后四项5XX需要配置proxy_next_upstream中的状态才可 以生效)、失效节点的触发条件和节点的恢复条件、所有节点失效后nginx会进 行恢复并进行重新监听。 (2)Nginx 负载均衡方式介绍 Nginx的负载均衡方式一共有4种:rr(轮询模式)、ip_hash、fair、url_hash。(3)Ngxin负载均衡和相关反向代理配置内容 Nginx负载均衡和与容错相关的反向代理的配置。 (4)获取后端流程 后端server的自动容错流程图。 (5)测试环境和测试结果 针对几种错误方式进行自动容错测试。 2.结论 (1)nginx 判断节点失效状态 Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;除非添加了proxy_next_upstream指令设置 对404、502、503、504、500和time out等错误进行转到备机处理,在 next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录),综述,nginx记录错误数量只记录timeout 、connect refuse、502、500、503、504这6种状态,timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream后nginx才会记录这4种HTTP 错误到fails中,当fails大于等于max_fails时,则该节点失效; (2)nginx 处理节点失效和恢复的触发条件 nginx可以通过设置max_fails(最大尝试失败次数)和fail_timeout(失效时间,在到达最大尝试失败次数后,在fail_timeout的时间范围内节点被置为失效,除非所 有节点都失效,否则该时间内,节点不进行恢复)对节点失败的尝试次数和失效时间 进行设置,当超过最大尝试次数或失效时间未超过配置失效时间,则nginx会对节点 状会置为失效状态,nginx不对该后端进行连接,直到超过失效时间或者所有节点都 失效后,该节点重新置为有效,重新探测;

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

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.doczj.com/doc/f813681739.html, 202.102.240.74 https://www.doczj.com/doc/f813681739.html, 202.102.240.74 https://www.doczj.com/doc/f813681739.html, 202.102.240.74 3.使三个域名都指向反向代理服务器的IP地址202.102.240.74。 4.设置反向代理所需要的DNS入口信息(即设置内部DNS,仅仅是squid在内部使用,Internet用户不可见)。有两种方法可以设置内部DNS,使用内部DNS 服务器来解析或者使用/etc/hosts文件来实现。 5.使用内部DNS服务器的资源记录如下: https://www.doczj.com/doc/f813681739.html, IN A 192.168.62.2 https://www.doczj.com/doc/f813681739.html, IN A 192.168.62.3 https://www.doczj.com/doc/f813681739.html, IN A 192.168.62.4 如果使用/etc/hosts文件来实现内部DNS(编译时应使用disable internal dns选项),编辑/etc/hosts文件添加如下条目:192.168.62.2 https://www.doczj.com/doc/f813681739.html, 192.168.62.3 https://www.doczj.com/doc/f813681739.html, 192.168.62.4 https://www.doczj.com/doc/f813681739.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足够快、内存足够大,应该可以运行很多副本。 以上

Nginx反向代理服务器的工作原理

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。 一概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。 图1 反向代理服务器的基本原理 二反向代理服务器的工作原理 反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。 1,作内容服务器的替身 如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火

墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。 当客户机向提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。 这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。 图2 反向代理服务器作为内容服务器的替身 可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。 2,作为内容服务器的负载均衡器 可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。 对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可

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 查询一下你的文件在那里啦

使用Nginx搭建反向代理

引言:最近公司有台服务器遭受DDOS攻击,流量在70M以上,由于服务器硬件配置较高所以不需要DDOS硬件防火墙。但我们要知道,IDC机房是 肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻击的流量会有多大,如果流量过大就会导致整个IDC网络瘫痪。我们都知道北方的数据中心和南方的数据中心从带宽出口上来讲南方多数机房完全有能力扛得住DDOS攻击,东莞的电信机房就不错。有朋友说过面对这种攻击可以在南方电信 在放一台服务器,然后做个反向代理;令我不解的是倘若再在南方放一台服务器,然后在南方电信服务器上做反向代理的话北方的用户访问速度肯定会很慢(南方机房多为电信单线,北京的多为双线或BGP线路)。好了,我们言归正传,不管用反向代理是怎么去实现,首先我们要解决的是如何搭建一台反向代理服务器,免得临时抱佛脚。 首先我们来看理解一下什么是反向代理,如下图:当客户机向站点发出请求时,请求将转到代理服务器,然后然后代理服务器将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户,对于访问服务器的用户来讲,此时的代理服务器对外就表现为一台服务器;我们还可以在反向代理服务器上加上一些策略,这样就对web服务器进行了一种安全保护,即使用户想入侵网站,也无法到达web服务器;反向代理服务器后端还可以放置多台 web服务器,从而可以减轻网站压力,起到集群作用 我们都知道Nginx是一款非常不错的程序,其最大的优点就是能承载高并发连接,这次我们就用Nginx来做一台反向代理服务器 环境描述:反向代理服务器为Linux系统,安装有Nginx;web服务器为windows 系统,装有IIS 目标:客户端在访问192.168.1.20的时候得到的内容必须是192.168.1.10这台web服务器上的内容

Nginx高级配置

Nginx高级配置 1. Nginx连接后端的方式:反向代理(proxy_pass)、直连 fastcgi(fastcgi_pass) 例子: fastcgi_pass backend1; proxy_pass http://backend2; location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。 注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。 2. Nginx调度与负载均衡配置(upstream 配置) 1) 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器。weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。 例如: upstreambakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstreambakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 3) hash 每个请求按访问$hash_seed的hash结果分配。 例如: upstreambakend { hash $hash_seed; server 192.168.0.14:88; server 192.168.0.15:80;

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虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现

在Linux虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现 目录 一、虚拟机下网络的网络配置 (2)

1、Bridged模式 (2) 2、NAT 模式 (3) 3、host-only 模式: (4) 4、作业环境网络拓扑图 (4) 二、Nginx的安装与配置 (5) 1、Nginx简介 (5) 2、安装前的环境准备 (5) 3、下载安装 (6) 4、控制Nginx服务 (6) 5、配置nginx (7) 6、负载测试 (9) 三、基于OpenSSL部署https网站 (9) 1、OpenSSL以及SSL/TLS协议简介: (9) 2、Linux下配置https (10) 3、SSL/TSL协议分析 (12) 四、用Nginx实现负载均衡和反向代理 (15) 1、反向代理的实现 (15) 2、负载均衡 (18) 一、虚拟机下网络的网络配置 1、Bridged模式 在桥接模式下,VMware虚拟机里的系统就像是局域网中的一台独立的主机,它可以访问同一个网段内任何一台机器,即可以相互ping通。

在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,就可以手工配置它的IP,DNS服务器,网关等信息,以实现通过局域网的网关或通过交换机访问外网。 图1 本地物理网卡和虚拟网卡通过虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位。 Vmware默认给虚拟系统提供了一个虚拟网卡(linux下默认为eth0设备),虚拟系统通过该网卡与外部通信。图中虚拟交换机由vmware提供,其默认设备名为VMnet0。如图1所示。 2、NAT 模式 NAT 即Network Address Translation 缩写,即网络地址转换,由NAT服务完成,在vmware里默认为VMnet8虚拟交换机,它将虚拟系统的IP地址转换成宿主机的IP地址,从而借用宿主机访问其他主机。使用NAT模式,也可以让虚拟系统通过宿主机器所在的网络来访问公网。 在这种模式下,虚拟系统是不能被LAN内其他PC访问的(宿主机可以,稍后讲),只能虚拟机以宿主机的名义访问LAN内的计算机。默认情况下NAT模式的虚拟系统的TCP/IP 配置信息由VMnet8(NAT)虚拟网络的DHCP服务器提供,因此采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。 图2 VMware Network Adepter VMnet8虚拟网卡的作用就是为主机和虚拟机的通信提供一个接口,即使主机关闭该网卡,虚拟机仍然可以连接到Internet,但是主机和虚拟机之间就不能互访了,还有访问局域网内的其他计算机,也是通过NAT服务实现。如图2所示

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.doczj.com/doc/f813681739.html, 下载Squid软件。 Squid代理服务器的设置

[全]Nginx配置文件上下文结构

Nginx配置文件上下文结构 1.Nginx配置文件上下文结构个Nginx的功能模块包含 系列的命令(cmd)以及与命令对应的处理函数(cmd→handler)。而Nginx 根据配置文件中的配 置指令就知道对应到哪个模块的哪个命令,然后调用命令对应的处理函数来处理。 一个Nginx配置文件包含若干配置项,每个配置项由配置指令和指令参数两部分组成,3个简单的Nginx配置项 Nginx配置文件中的配置指令如果包含空格,就需要用单引号或双引号引起来。指令参数如果 是由简单的字符串构成的,简单配置项就需要以分号结束;指令参数如果是复杂的多行字符串, 配置项就需要用花括号“{}”括起来。 Nginx配置项的具体功能与其所处的作用域(上下文、配置块)是强相关的。Nginx指令的作 用域配置块大致有5种,它们之间的层次关系。

5种Nginx指令的作用和它们之间的层次关系一个标准的Nginx配置文件的上下文结构如 下:

... #main全局配置块,例如工作进程数 events { #events事件处理模式配置块,例如IO读写模式、连接数等... } http #HTTP协议配置块 { ... #HTTP协议的全局配置块

server #server虚拟服务器配置块 一 { ... #server全局块location [PATTERN] #location路由规则配置块一 { ... } location [PATTERN] #location路由规则配置块二 { ... } } server #server虚拟服务器配置块二 { ...

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服务器的负载。 三.反向代理工作原理

Nginx安装及简单配置反向代理

Nginx安装及简单配置反向代理一.环境 VMware: Redhat(Server_A 部署nginx文件服务页面) WinServer(Server_B 部署IIS) Redhat(nginx代理服务器) 源码包: nginx-1.5.3.tar.gz openssl-1.0.1c.tar.gz (提供ssl加密协议) pcre-8.33.tar.gz (http rewrite模块:地址重写) zlib-1.2.8.tar.gz (gzip模块,传输数据打包)拓扑结构: 二.安装 1.安装基础编译环境 yum install -y gcc gcc-c++ make 2.安装

2.1解压 cd /tmp/soft/ tar xzfv nginx-1.5.3.tar.gz cd .. tar xzfv openssl-1.0.1c.tar.gz cd .. tar xzfv pcre-8.33.tar.gz cd .. tar xzfv zlib-1.2.8.tar.gz 2.2安装依赖 cd/tmp/soft/pcre-8.33 ./configure make&&make install cd/tmp/soft/zlib-1.2.8 ./configure make&&make install cd/tmp/soft/openssl-1.0.1c ./configure make&&make install 2.3安装nginx cd/tmp/soft/nginx-1.5.3 ./configure --prefix=/home/nginx --with-http_stub_status _module --with-http_ssl_module ./configure –help #查看配置概述 make&&make install 3.yum安装依赖包:

squid介绍及其简单配置

1.Squid是什么?Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说, 1.Squid是什么? Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://https://www.doczj.com/doc/f813681739.html,/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理 HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。 2.squid代理的作用: 3.接下来我们主要探讨的是squid各种代理的定义 正向代理 a.标准的代理缓冲服务器

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

Nginx 配置文件nginx.conf的完整配置说明

#用户用户组 user www www; #工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点 worker_processes 5; #错误日志 error_log logs/error.log; #pid文件位置 pid logs/nginx.pid; worker_rlimit_nofile 8192; events { #工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行 worker_connections 4096; } http { include conf/mime.types; #反向代理配置,可以打开proxy.conf看看 include /etc/nginx/proxy.conf; #fastcgi配置,可以打开fastcgi.conf看看 include /etc/nginx/fastcgi.conf; default_type application/octet-stream; #日志的格式 log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #访问日志 access_log logs/access.log main; sendfile on; tcp_nopush on;

#根据实际情况调整,如果server很多,就调大一点 server_names_hash_bucket_size 128; # this seems to be required for some vhosts #这个例子是fastcgi的例子,如果用fastcgi就要仔细看 server { # php/fastcgi listen 80; #域名,可以有多个 server_name https://www.doczj.com/doc/f813681739.html, https://www.doczj.com/doc/f813681739.html,; #访问日志,和上面的级别不一样,应该是下级的覆盖上级的 access_log logs/domain1.access.log main; root html; location / { index index.html index.htm index.php; } #所有php后缀的,都通过fastcgi发送到1025端口上 #上面include的fastcgi.conf在此应该是有作用,如果你不include,那么就把fastcgi.conf的配置项放在这个下面。 location ~ .php$ { fastcgi_pass 127.0.0.1:1025; } } #这个是反向代理的例子 server { # simple reverse-proxy listen 80; server_name https://www.doczj.com/doc/f813681739.html, https://www.doczj.com/doc/f813681739.html,; access_log logs/domain2.access.log main; #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ {

相关主题
文本预览
相关文档 最新文档