本篇主要介绍正向代理和反向代理。并简单介绍下 nginx 反向代理的配置以及注意事项。
在传统的 web 端开发项目中,一般方式是前端完成静态 -> 移交到后端 -> 根据后端语言,将 html 文件改写成为 .php( php开发 ) 或 .jsp( java 开发) 文件。这样做的一大弊端就是前后端耦合度太高,与新兴起来的前后端分离开发模式相比,开发效率实在是低。基于这个问题,目前我的解决方式是使用 nginx 反向代理完成前后端分离的开发模式
一、正向代理
现在我访问 A 网站,但是因为某些权限限制,我访问不到 A 网站,但是我能够访问到 B 服务器,并且 B 服务器能够访问到 A 网站,此时我就访问 B 服务器,然后告诉他,帮我去访问一下 A 网站吧,B 服务器就把访问到 A 网站得到的数据返给我,这样我就能得到 A 网站的信息了。在此,B 服务器就充当了中介的角色。看下图:
客户端向 https://www.google.com
发起请求,但是我们访问不到( 至于为什么,请自行百度 ),这时候就出现了一批代理,比如某灯、某风、某 ss ,它们的作用就相当于是一台代理服务器,我们把将请求信息发送给代理服务器,代理服务器帮我们去访问 https://www.google.com
,代理服务器拿到响应数据再发送给客户端,我们就能够访问到 Google 了,又称 科学上网
。
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
二、正向代理配置
MAC
端代理配置:
系统偏好设置 -> 网络 -> 高级 -> 代理 -> 网络 -> 选择协议 -> 输入代理地址和端口号,保存即可
winows
代理配置:
网络设置 -> 代理 -> 打开使用代理服务器 -> 输入代理地址和端口号,保存即可
其实像某风、某灯、某ss 都已经实现了傻瓜式代理,即下载安装就可以使用。文末我会贴出这几个代理工具的下载地址。
三、反向代理
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
四、nginx反向代理配置
1、安装 nginx
打开nginx官网,选择下载稳定版 nginx ,下载后直接解压安装。
2、修改配置文件
安装完成后,打开 nginx 中的 conf -> nginx.conf 文件进行配置。在配置文件中,有 server{}
配置项,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31server {
listen 80; //监听的端口号
server_name localhost www.summer.com //域名配置,浏览器访问此域名可直接访问
error_page 500 502 503 504 /50x.html
location / {
root ~/Desktop/project/src; //项目目录
index index.html index.htm; //打开项目时,默认打开的文件
}
location /api {
proxy_pass http://api-test.xxxx.com/api; //代理请求的 url 地址
proxy_redirect off ; //以下是设置请求头等信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以上的域名配置,需要打开系统 hosts 文件,将 127.0.0.1 指向 www.summer.com 即可。此处还有一点需要说明,在服务器端需要对域名 www.summer.com
开放访问权限。
五、nginx 常用指令
1 | start nginx // 启动 nginx |
以上命令在 Windows 系统中有有点不好用,比如 nginx -s stop
有时候需要使用 ./nginx -s stop
才能成功停止 nginx
本文参考: