正向代理:你可以这样理解,就是把局域网以外的 Internet 想象成一个外网世界,那么当我们局域网中的客户端设备要访问局域网以外的 Internet 时,需在客户端浏览器中配置代理服务器,然后通过代理服务器来进行访问,将访问到的局域网以外的 Internet 网站内容返回给客户端,而不是通过局域网中的客户端设备直接访问到局域网以外的 Internet 网站中,这种代理服务称之为:正向代理。
正向代理的用途:
访问原来无法访问的资源;
可做缓存,加速访问资源;
对客户端访问授权,上网进行认证;
代理可以记录用户访问记录等,且对外隐藏用户信息;
二、反向代理
反向代理:无需在客户端进行配置即可访问,我们只需要将请求发送给反向代理服务器,然后由反向代理服务器去选择要访问的目标服务器获取数据后,在返回给客户端。这里你可以这样理解:反向代理服务器和目标服务器对外访问的就是一台服务器,知道的是反向代理服务器地址,其实隐藏了真实服务器的 IP 地址, 这种代理服务称之为:反向代理。
反向代理的用途:
保证内网安全,通常将反向代理作为公网访问地址,Web 服务器是内网;
负载均衡,通过反向代理服务器来优化网站的负载;
三、正向代理配置实操
在Nginx服务器上,修改nginx.conf配置文件,配置到一个 server 块中,如下代码块中的第 35 行,在该 server 块中,server_name 指令,不要设置虚拟主机的名称和 IP,按默认的即可
,而resolver是必须要配置的,如没有该指令,Nginx 将无法处理接收到的IP地址,其次,Nginx 代理服务不支持正向代理 HTTPS 站点。
# vi /root/nginx-1.17.0/conf/nginx.conf 35 server { 36 resolver 192.168.1.10 # 指定 Nginx 服务器 IP 地址 37 listen 80; 44 location / { 45 proxy_pass http://$http_host$request_uri; # 设定代理服务器的协议和地址
# java -version java version "1.7.0_45" OpenJDK Runtime Environment(rhel-2.4.3.3.el6-x86_64 u45-b15) OpenJDK 64-Bit Server VM(build 24.45-b08, mixed mode)
解压Tomcat压缩包,在bin目录下,执行startup.sh的文件,启动 Tomcat;
# tar -xvf apache-tomcat-7.0.70.tar.gz # cd apache-tomcat-7.0.70 # ls bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work # cd bin/ # ./startup.sh Using CATALINA_BASE: /root/apache-tomcat-7.0.70 Using CATALINA_HOME: /root/apache-tomcat-7.0.70 Using CATALINA_TMPDIR: /root/apache-tomcat-7.0.70/temp Using JRE_HOME: /usr Using CLASSPATH: /root/apache-tomcat-7.0.70/bin/bootstrap.jar:/root/apache-tomcat-7.0.70/bin/tomcat-juli.jar Tomcat started.
=:用于不含正则表达式的 URI 前,要求请求字符串与 URI 匹配,如匹配成功,将停止向下搜索并处理该请求;
~:用于表示 URI 包含正则表达式,并区分大小写;
~*:用于表示 URI 包含正则表达式,不区分大小写;
^~:用于不含正则表达式的 URI 前,需 Nginx 服务器找到标识 URI 和请求字符串匹配度高的 location 后,立即使用此 location 处理请求,不再使用 location 块中的正则 URI 的请求字符串做匹配;
如果 URI 包含正则表达式,则必须要有~或~*标识。
编辑防火墙配置文件,添加对外开放端口8080、8081、9001;
# vim /etc/sysconfig/iptables 6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 7 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT 8
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT 9 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
重启防火墙,并进行查看;
# /etc/init.d/iptables restart # service iptables status 表格:filter Chain INPUT(policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080 3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8081 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9001
最后,重启Nginx服务,或重新加载配置文件;
# cd /usr/local/nginx/ # cd sbin/ # ls nginx # ./nginx -s stop # ./nginx