Nginx正向代理和反向代理理解和实战配置
一:正向代理和反向代理概念
1:什么是代理服务器?
代理服务器就是发起请求的客户端与原始服务器端之间的一台跳板服务器。
2:正向代理
正向代理,工作原理就像一个跳板。比如我想访问 Google来搜索关键词“Nginx”,但是国内现在不允许访问Google。但是我能访问国外的一台服务器(代理服务器),这台服务器能够访问 Google。于是我先连上代理服务器,告诉它我需要访问 Google 来搜索关键词“Nginx”,代理服务器去请求访问之后,然后返回给我。
3:反向代理
反向代理,客户端访问 http://www.test.com/readme,但 www.test.com 上并不存在 readme 资源,它是偷偷从另外一台服务器上取回来,然后作为转交的内容返回给用户,但用户并不知情。这里所提到的 www.test.com 这个域名对应的服务器就设置来反向代理功能。
4:正向代理和反向代理区别
正向代理:客户端 <一> 代理 一>服务端
反向代理:客户端 一>代理 <一> 服务端
正向代理和反向代理的区别在于代理的对象不一样,正向代理的代理对象是客户端,反向代理的代理对象是服务端。
二:正向代理配置
正常上网就是一种正向代理:现在有A(192.168.1.110)、B(192.168.1.44)两台服务器,B是正向代理服务器,A是原始服务器,客户端要通过B才能访问A。正向代理:客户端 <一> 代理(B) 一>服务端(A)
1:客户端配置,这里是mac系统

2:正向代理服务器配置
server {
listen 8080;
server_name localhost;
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 解析, Google 提供的免费 DNS服务器的IP地址
proxy_pass 配置代理转发,B服务器所有访问根一级的请求全部代理转发对应到 $http_host$request_uri 去了, $http_host 就是我们要访问的主机名, $request_uri 就是我们后面所加的参数。
简单来说就是相当于配置好了我们请求B服务器,B服务器再去请求我们所请求的地址
3:原始服务器配置
server {
listen 8080;
server_name localhost;
location / {
if ( $remote_addr !~* "^192\.168\.1\.44") {
return 403;
}
root html;
index index.html index.htm;
}
三:反向代理配置
反向代理指代理后端服务器响应客户端请求的一个中介服务器,代理的对象是服务端。
根据在浏览器输入的路径不同,跳转到不同端口的服务中。
server {
listen 9000;
server_name www.test.com;
location ~ /example1/ {
proxy_pass http://127.0.0.1:5000;
}
location ~ /example2/ {
proxy_pass http://127.0.0.1:8080;
}
}
