正向代理
正向代理也就是传说中的代理。
比如我们常用的FQ软件就是这个代理者。用户将请求发送至代理服务器,代理服务器向实际请求位置获取数据,然后打包发送至用户。
从网站来讲,网站是不知道请求者的信息的,只对代理服务器进行记录,是否知道用户信息取决于代理服务器是否告诉网站。
结论就是正向代理是一个位于客户端可服务端之间的服务器,从服务端获取客户端需要访问的内容通过代理服务器返回给客户端。
反向代理
当用户访问的内容在当前服务器上面不存在的时候,刚好该服务器设置了反向代理功能,又刚好在反向代理的服务器列表中的某一台服务器有这个页面,那么代理者会把这个内容返回给客户端。但是客户端却当做目标服务器上存在该页面。
通俗一点来讲,我们打某某客服电话的时候拨通的是一个固定的电话号码,但是服务台会帮我们转接至空闲的客服人员,而对于客户来讲,只要能帮我们解决问题就行了,哪个客服没有关系。
对于网站优化来讲,当面对成千上万的访问者时,反向代理会将请求分别分给给不同的服务器实现相同的功能,这样就能大大的减少服务器的负荷。
Nginx工具的作用以及使用方法
刚刚我们说到了反向代理实现服务器的负载均衡,现在我们来聊一下具体实现。
1. Nginx的安装
下载Nginx,解压,安装到指定目录。
lap@lap-KVM:~$ wget http://labfile.oss.aliyuncs.com/nginx-1.7.9.tar.gz lap@lap-KVM:~$ tar zxvf nginx-1.7.9.tar.gz lap@lap-KVM:~$ cd nginx-1.7.9 lap@lap-KVM:~/nginx-1.7.9$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module lap@lap-KVM:~/nginx-1.7.9$ # make && make install
切换到Nginx的安装目录下,启动Nginx。
lap@lap-KVM:~$ cd /usr/local/nginx/
lap@lap-KVM:/usr/local/nginx$ sudo ./nginx-1.7.9/objs/nginx
此时访问本机将会看到Nginx的欢迎界面。
安装好了Nginx之后我们开始具体的配置。
2. 配置nginx.conf文件
nginx.conf里提供了很多调节优化的地方,这里简述http模块的几个常用参数,详细配置请google一下。
简单介绍一下红色方框内的一些配置参数。
第一个方框内的是关于日志的设置:
-
log_format 定义日志格式
-
access_log 设置是否保存访问日志,设置为off可以降低磁盘IO而提升速度。
第二个方框内的是一些基本设置:
-
sendfile 指向sendfile()函数。sendfile()在磁盘和TCP端口(或者任意两个文件描述符)之间复制数据。sendfile()直接从磁盘上读取数据到操作系统缓冲,因此会更有效率。
-
tcp_nopush 配置nginx在一个包中发送全部的头文件,而不是一个一个发送。
-
tcp_nodelay 配置nginx不要缓存数据,快速发送小数据。
-
keepalive_timeout 指定了与客户端的keep-alive链接的超时时间。服务器会在这个时间后关闭链接。
第三个方框内的是关于压缩功能的设置:
-
gzip 打开压缩功能可以减少需要发送的数据的数量。
-
gzip_disable 为指定的客户端禁用 gzip 功能。
-
gzip_proxied 允许或禁止基于请求、响应的压缩。设置为any,就可以gzip所有的请求。
-
gzip_comp_level 设置了数据压缩的等级。等级可以是 1-9 的任意一个值,9 表示最慢但是最高比例的压缩。
- gzip_types 设置进行 gzip 的类型。
接下来看一下http模块中的子模块server,以及server中的子模块location的配置:
其中:
-
listen 表示当前的代理服务器监听的端口,默认的是监听80端口。
-
server_name 表示监听到之后需要转到哪里去,localhost表示转到本地,也就是直接到nginx文件夹内。
-
location 表示匹配的路径。
-
root 表示到指定文件路径寻找文件,可用于静态文件。
-
index 表示默认主页,可以指定多个,按顺序查找。
-
deny和allow 是访问控制设置,禁止或允许某个IP或者某个IP段访问。也可以指定unix,允许socket的访问。
-
limit_rate_after 设置不限速传输的响应大小。当传输量大于此值时,超出部分将限速传送。
-
limit_rate 限制向客户端传送响应的速率限制。参数的单位是字节/秒,设置为0将关闭限速。比如图片中表示不限速部分为3m,超过了3m后限速为20k/s。
Nginx+Tomcat
在nginx.conf中新建一个location,用正则表达式将所有JSP的请求匹配到该location中:
-
proxy_set_header Host $host; 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP。
-
client_max_body_size 10m; 允许客户端请求的最大单文件字节数。
-
client_body_buffer_size 128k; 缓冲区代理缓冲用户端请求的最大字节数。
-
proxy_connect_timeout 90; Nginx跟后端服务器连接超时时间。
-
proxy_read_timeout 90; 连接成功后,后端服务器响应时间。
-
proxy_buffer_size 4k; 设置代理服务器保存用户头信息的缓冲区大小。
-
proxy_buffers 6 32k; proxy_buffers缓冲区。
-
proxy_busy_buffers_size 64k; 高负荷下缓冲大小。
-
proxy_temp_file_write_size 64k; 设定缓存文件夹大小。
对于静态文件的请求,我们也新建一个location,将常见图片、css、js等请求匹配到该location中:
配置非常简单,通过root关键字,将匹配到的请求都到tomcat/webapps/ROOT目录下直接查找。而expires 30d则表示使用expires缓存模块,缓存到客户端30天。如果未缓存这些文件,我们访问的Tomcat主页将会没有任何样式,这样就不美观了。
之后就到了最关键的负载均衡的配置的,我们在其中加入分摊载荷的服务器列表:
这样就能将用户的请求发送到不同的服务器上面了,另外也可以给不同的服务器添加不同的优先级,在server后面加上一个权重weight,权重越大表示访问到的机会越大,默认为1。
这样一个完整的反向代理就实现了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:反向代理和正向代理以及Nginx工具的简要使用 - Python技术站