前言
上一篇文章,简要的对Nginx配置文件进行了介绍,但是大部分人说起Nginx还是想起反向代理、负载均衡等关键词。这篇文章旨在介绍Nginx的反向代理功能。
正向代理与反向代理
无论学习什么,首先要知道相关概念,有反向代理就会有正向代理。那么,正向代理与反向代理分别是什么呢?
维基百科
- 正向代理(前向代理):
代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
- 反向代理:
反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。
- 图解:
区别
- 正向代理
1、为客户端的代理,将从互联网上获取的资源返回给一个或多个客户端,服务端只知道代理的IP地址而不知道客户端的IP地址。 2、客户端借由正向代理可以间接访问很多不同互联网服务器的资源。 3、例如科学上网。。。
- 反向代理
1、为服务器端的代理,客户端通过反向代理服务器间接访问不同服务器端资源,而不需要知道这些后端服务器的存在。 2、所有服务器资源来自于反向代理服务器。 3、例如Nginx。。。
配置实战
知道了正向代理与反向代理的区别,我们就要进入正题,如何使用Nginx配置正向代理与反向代理。
- Nginx配置正向代理
server {
# listen 8080;
# server_name localhost;
# 配置DNS地址
resolver 114.114.114.114;
# 监听8000端口 所有8000端口的请求 使用DNS解析域名 并访问
listen 8000;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
# 代理服务器协议与格式
proxy_pass http://$http_host$request_uri;
}
测试用例
nginx -s reload
curl -l --proxy 127.0.0.1:8000 'www.baidu.com'
curl -l --proxy 127.0.0.1:8000 http://www.taobao.com/
- Nginx配置反向代理
例子:使用www.zacpark.com访问127.0.0.1:8080
1、 首先,配置host
127.0.0.1 www.zacpark.com
1、 修改nginx配置
server {
listen 80;
server_name www.zacpark.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# 代理服务器协议与格式
proxy_pass http://127.0.0.1:8080;
root html;
index index.html index.htm;
}
1、 reload nginx配置
2、 输入www.zacpark.com访问
结语
理解正向代理与反向代理的区别,对Nginx反向代理配置做了简单介绍,有助于后续学习Nginx反向代理的详细配置。
参考文献
www.jianshu.com/p/ae76c223c… 精通Nginx(第二版) zh.wikipedia.org/wiki/代理服务器 zh.wikipedia.org/zh-sg/反向代理 www.jianshu.com/p/8efd3c0ef… tech.souyunku.com/ysocean/p/9…