Nginx反向代理
Nginx反向代理
1.什么是代理服务器
在客户端访问某个目的主机的时候,不会将请求直接发送给目标网站服务器,而是先通过反向代理服务器,代理服务器接收客户请求后,再向目的主机发送,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2.为什么要使用代理服务器
1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息,在站点上屏蔽所有,只允许代理服务器访问
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的FQ浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。
3.正向代理和反向代理
1)正向代理
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
2)反向代理
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
4.配置nginx反向代理
1)安装nginx
1.反向代理服务器:192.168.1.1
2.http服务器:192.168.1.2
安装>>>http://www.cnblogs.com/wazy/p/8108824.html
2)配置反向代理服务器
#vim /etc/nginx/nginx.conf upstream server1 { server 192.168.1.2:8080; #http服务器地址 } upstream server2 { server 192.168.1.2:8081; #http服务器地址 } server { listen 80; server_name 8080.com; #域名,可在本机hosts文件配置一下 #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://server1; index index.html index.htm; } } server { listen 80; server_name 8081.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://server2; index index.html index.htm; } }
3)配置http服务器
mkdir /var/www/html/1/ #创建两个网站根目录 mkdir /var/www/html/2/ echo "8080.com" > /var/www/html/1/index.html echo "8081.com" > /var/www/html/2/index.html #为两个网站创建两个主页面,用于测试 vim /etc/nginx/nginx.conf server { listen 8080; server_name localhost; location / { root /var/www/html/1/; index index.html index.htm; } } server { listen 8081; server_name localhost; location / { root /var/www/html/2/; index index.html index.htm; } }
4)防火墙设置
#反向代理服务器 systemctl stop firewalld #http服务器 firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.1 port port=8080 protocol=tcp accept' firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.1 port port=8081 protocol=tcp accept'
5)测试
现在访问8080.com和8081.com可以成功访问,而直接访问192.168.1.2:8080和192.168.1.2:8081则失败