【Nginx】第十五节 配置正向代理
author:咔咔
wechat:fangkangfk
我们来做做一个测试,我们准备俩台服务器,A服务器放置我们想要的资源,B服务器配置代理
为了避免浏览器直接访问A服务器可以获取资源,我们先需要对A服务器做一个访问控制,在之前我们提过访问控制
这个ip地址为B服务器的地址,这里使用的的remoto_addr(如果是多层代理需要使用x_forwarded_for这个在访问控制那一节写到),这个判断就是如果访问的ip地址不是118.126.106.11就会返回403错误
location / {
if ( $remote_addr !~* "^118\.126\.106\.11") {
return 403;
}
root /opt/app/demo/html;
index index.html index.htm;
}
这个时候我们的客户端就不会直接获取到A服务器的资源了。然后我们需要配置B服务器的nginx
server {
listen 80;
server_name localhost nginx.tangll.cn;
resolver 8.8.8.8;
location / {
proxy_pass http://$http_host$request_uri;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
resolver
为DNS解析,这里填写的IP为Google提供的免费DNS服务器的IP地址proxy_pass
配置代理转发
至此便是配置了B服务器所有访问根一级的请求全部都代理转发对应到$http_host$request_uri去了,$http_host
就是我们要访问的主机名,$request_uri
就是我们后面所加的参数。
简单的说至此就是相当于配置好了我们请求了B服务器,B服务器再去请求我们所请求的地址。
下来我们需要配置代理,在代理里边配置B服务器的地址
这个时候可以查看一下ip地址,我们的客户端ip就是B服务器的IP地址了,就说明我们代理已经配置成功了
以上就是正向代理的一个场景演示,这个过程中可以知道,我们客户端是想要A的资源,但是A的资源只有B能拿到,便让B代理去帮助我们访问A的资源。整个过程A只知道B拿了他的资源,并不知道客户端拿到。