(一)nginx反向代理
什么是代理服务器 :代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
为什么要使用代理服务器
1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的×××浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。 本文主要讲解nginx代理服务器。
Nginx中的ngx_http_proxy_module模块可以实现后端服务器的反向代理功能,这样就可以实现客户端请求的动静分离以及负载均衡功能。
环境简介:
服务器名称 | IP地址 | 备注 |
nginx服务器 | 192.168.180.4 | |
node1 | 192.168.180.23 | httpd服务器 |
node2 | 192.168.180.9 | tomcat服务器 |
具体步骤:
1,node1(192.168.180.23)httpd服务器的配置
1.1通过yum安装httpd服务器
[root@localhost ~]# yum install httpdLoaded plugins: fastestmirrorbase | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: centos.ustc.edu.cn * updates: mirrors.163.comResolving Dependencies--> Running transaction check---> Package httpd.x86_64 0:2.4.6-45.el7.centos.4 will be installed--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos.4 for package: httpd-2.4.6-45.el7.centos.4.x86_64--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.4.x86_64--> Running transaction check---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos.4 will be installed---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed--> Finished Dependency ResolutionDependencies Resolved========================================================================================================== Package Arch Version Repository Size==========================================================================================================Installing: httpd x86_64 2.4.6-45.el7.centos.4 updates 2.7 MInstalling for dependencies: httpd-tools x86_64 2.4.6-45.el7.centos.4 updates 84 k mailcap noarch 2.1.41-2.el7 base 31 kTransaction Summary==========================================================================================================Install 1 Package (+2 Dependent packages)Total download size: 2.8 MInstalled size: 9.6 MIs this ok [y/d/N]: y(1/3): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:00 (2/3): httpd-tools-2.4.6-45.el7.centos.4.x86_64.rpm | 84 kB 00:00:00 (3/3): httpd-2.4.6-45.el7.centos.4.x86_64.rpm | 2.7 MB 00:00:00 ----------------------------------------------------------------------------------------------------------Total 3.4 MB/s | 2.8 MB 00:00:00 Running transaction checkRunning transaction testTransaction test succeededRunning transaction Installing : mailcap-2.1.41-2.el7.noarch 1/3 Installing : httpd-tools-2.4.6-45.el7.centos.4.x86_64 2/3 Installing : httpd-2.4.6-45.el7.centos.4.x86_64 3/3 Verifying : httpd-tools-2.4.6-45.el7.centos.4.x86_64 1/3 Verifying : mailcap-2.1.41-2.el7.noarch 2/3 Verifying : httpd-2.4.6-45.el7.centos.4.x86_64 3/3 Installed: httpd.x86_64 0:2.4.6-45.el7.centos.4 Dependency Installed: httpd-tools.x86_64 0:2.4.6-45.el7.centos.4 mailcap.noarch 0:2.1.41-2.el7 Complete
1.2配置httpd服务器
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd"## Listen: Allows you to bind Apache to specific IP addresses and/or# ports, instead of the default. See also the# directive.## Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses.##Listen 12.34.56.78:80Listen 8888DocumentRoot "/var/www/html"
1.3给httpd服务器做一个定制页面
[root@localhost html]# mkdir -p /var/www/html[root@localhost html]# vim /var/www/html/index.htmlthis is 192.168.180.23 httpd server
1.4重启下httpd服务,显示如下页面
[root@localhost html]# service httpd restart Redirecting to /bin/systemctl restart httpd.service
2.node2(192.168.180.9)tomcat服务器的配置
2.1 解压tomcat
[root@localhost local]# ls apache-tomcat-7.0.63.tar.gz[root@localhost local]# tar xf apache-tomcat-7.0.63.tar.gz [root@localhost local]# mv apache-tomcat-7.0.63 tomcat
2.2创建编辑自定义路径
[root@localhost WEB-INF]# mkdir /var/www[root@localhost WEB-INF]# vim /var/www/index.jspthis is tomcat test index.jsp
2.3编辑修改端口和自定义网页测试路径
[root@localhost local]# vim tomcat/conf/server.xml
2.4重启tomcat服务并访问
[root@localhost WEB-INF]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/java/jdk1.7.0_79/Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.
3.nginx 服务器的配置
[root@Monitor server]# vim server.conf server { listen 80; server_name xn3.lqb.com; # root /html/xn3; location / { proxy_pass http://192.168.180.23:8888; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }[root@Monitor server]# /usr/local/nginx/sbin/nginx -s reload
备注:
proxy_pass 设置代理服务器
proxy_set_header Host $host; 自定义客户端请求的首部的值
proxy_set_header X-Real-IP $remote_addr; 自定义头部信息加入客户端IP
nginx官方文档:
(二)缓存
当Nginx将客户端请求反向代理至后端服务器时,建立的是keep-alive连接;代理服务器与客户端,代理服务器与后端web server都建立长链,这会降低Nginx性能,所以这时候,proxy模块的缓存功能就派上用场了,代理服务器与客户端之间依旧保持长链,而代理服务器与后端web server之间请求结束后,代理服务器将内容缓存在本地,与后端不建立长链,大大节省了系统资源;同时,当客户端请求来时,代理服务器会直接去缓存中寻找并返回给客户端。代理服务器将缓存存在内存中,以key-value形式存储,value存储的是指向本地文件系统中存储的URL的哈希值。
nginx官方文档关于缓存
Syntax: | proxy_cache |
---|---|
Default: | proxy_cache off; |
Context: | http , server , location |
具体的实例如下:
1.创建自定义的缓存目录
[root@Monitor server]# mkdir -pv /cache/nginx/[root@Monitor server]# chown -R appuser.appuser /cache/nginx/
2.在配置文件的http段定义缓存目录
[root@Monitor server]# vim /usr/local/nginx/conf/nginx.confproxy_cache_path /cache/nginx keys_zone=mycache:32m;
3.在server或location段均可使用,本文在location段中使用
[root@Monitor server]# vim server.conf server { listen 80; server_name xn3.lqb.com; location / { proxy_cache mycache; proxy_cache_valid 200 3h; proxy_cache_valid 301 302 10m; proxy_cache_valid all 1m; proxy_cache_use_stale error timeout http_500 http_502 http_503; proxy_pass http://192.168.180.9; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
4,请求后,缓存目录中出现缓存信息
[root@Monitor server]# ll /cache/nginx/总用量 4-rw------- 1 appuser appuser 362 8月 8 16:57 af619c8ddbeaa235da85e6b4963a861b
备注:
proxy_cache_path /cache/nginx/ keys_zone=mycache:32m;
定义缓存在文件系统中的保存路径,定义key值在内存中的变量名与大小,其余诸多选项有默认配置,定义在哪个位置,就有哪些配置可使用缓存
proxy_cache mycache;
使用mycache缓存
proxy_cache_valid 200 3h;
以响应状态码定义缓存保存时长,可定义多个
proxy_cache_use_stale error timeout http_500 http_502 http_503;
定义在遇到什么情况下可以使用过期缓存响应客户端
一般来说,我们把缓存路径定义在http段,调用缓存根据具体情况配置。
nginx官方文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache