1. 引言
nginx
不仅可以来做反向代理
,也可以用来做正向代理
(透明代理
,代理上网
),
这里可以浏览nginx反向代理
2. 反向代理
外部机器通过网关
访问网关后面服务器上的内容,网关
起到了反向代理
的功能,我们平时通过浏览器访问远程的web服务器
大都是这样实现的。
3. 正向代理
就是上面的过程反过来,我们平时说的上网代理
,局域网中的用户通过网关做代理访问外部的网络。
4. 正向代理与反向代理对比解析
它俩都有三个共同的角色:
请求者
代理者
实际目标
如本地开发时遇到跨域问题,我们做代理转发 :
/api/items
=>http://localhost:3000/api/items
(转发)=> http://localhost:7777/api/items
这种转发,称之为正向代理
=> 请求者&代理者
在同一个域(被服务端
) 目标在另一个服务器(服务端
)
请求者
通常是浏览器
代理者
http://localhost:3000
实际目标
http://localhost:7777
反向代理
请求者
是一个域(被服务端
) 代理&目标
是另外一组(服务端
)
实际本地开发大部分都属于正向代理
,如果代码编译完后丢到服务器上,这个时候必然涉及跨域,假如前端代码通过server1
访问,而后端代码通过server2
访问,浏览器和它们是分开的,这个时候就是反向代理
模式了。
通常开发的时候,浏览器也与代理者同在一台服务器上,一般开发都正向代理
,而发布后,浏览器就不在一起了,就是反向代理
了。
5. Nginx代理上网
nginx
同样可以实现代理上网的功能,配置如下:
user www;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
events {
use epoll;
worker_connections 1024;
}
http {
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
}
nginx
实现代理上网,有三个关键点必须注意,其余的配置跟普通的nginx
一样
1.增加dns
解析resolver
2.增加无server_name
名的server
3.proxy_pass
指令
6. 实现步骤
1、把如下配置填到你的配置文件http作用域
resolver 8.8.8.8;
server {
listen 8088;
location / {
proxy_pass http://$http_host$request_uri;
}
}
2、重启nginx使配置文件生效
nginx -s reload
3、设置ie代理
4、可以使用代理上网了
可以访问http://ip.quancha.cn检测代理是否生效
使用nginx
代理上网后
使用nginx代理上网前
(后续待补充)