Nginx 反向代理与正向代理

代理分为正向代理和反向代理,本次就来演示一下Nginx配置正向代理和反向代理的场景。 顺便讲解一下正向代理和反向代理的区别正向代理和反向代理的区别

Nginx 反向代理与正向代理

Nginx

首先,我们需要知道什么是反向代理和正向代理区别

一、正向代理

正向代理简单的来说就是我们的代理服务器代替用户去请求后端节点

nginx正向代理代替工具还有goproxy

为什么要使用正向代理

用户无法直接访问服务器B (常见例子就是我们使用的Shadowsocks)

Cache缓存作用

cache缓存技术和代理服务技术是紧密联系的(不只是正向代理使用cache缓存,反向代理同时也使用缓存)简单的来说就是用户A访问了代理服务器,那么代理服务器会将用户A的数据保存一段时间,如果该时间段呢用户B同时也访问了代理服务器,那么代理服务器将不会直接请求服务器B,而是直接将缓存直接返回给用户A

拦截访问

假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许防火互联网(这个代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器C,而用户B因为没有被代理服务器授权时,数据包会直接丢弃

隐藏访问者

我们可以看出服务器C并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器C进行交互,如果代理服务器Z完全被用户A控制(或不完全控制)会惯以肉鸡术语称呼

正向代理总结

正向代理是一个位于客户端和原始服务器(origin server)之前的服务器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定目标,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器。(类似于我们的ss服务)

二、反向代理

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理发送普通请求,接着反向代理将判断向何处(后端节点)转交请求,并将获得的内容返回给客户端

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式成为反向代理服务

透明代理

透明代理的意思是客户端根本不需要指定有代理服务器的存在,改变你的request fields(报文),并会传送真实IP,注意加密的透明代理则属于匿名代理,意思是不用设置代理了。透明代理实践的例子就是很多公司所使用的行为管理软件

当用户A和用户B并不知道行为管理设备充当透明代理行为,用户A或者用户B向服务器A或者服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或者B发送请求,当接受信息回传,透明代理再根据自身的设置把允许的保存发回至用户A或B,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据

三、正向代理配置测试

我们使用nginx代理上网为例子进行演示nginx正向代理

下载并安装nginx (正向代理不需要单独的模块)

我们使用2台服务器都进行如下操作

10.4.82.140 tomcat.i4t.com 为后端应用服务(域名为tomcat.i4t.com)

10.4.82.142 nginx.i4t.com 为代理服务器(域名为nginx.i4t.com)

请仔细阅读本段 首先我们代理服务器几乎不进行任何配置,只是一个普通的nginx代理,所有修改nginx的配置都是在代理服务器上添加

两台nginx默认配置如下

1.nginx版本没有太大要求

wgethttp://nginx.org/download/nginx-1.10.3.tar.gz

#按照依赖包

yuminstall-ygccglibcgcc-c++prce-developenssl-develpcre-devel

useradd-s/sbin/nologinnginx-M

tarxfnginx-1.10.3.tar.gz&&cdnginx-1.10.3

#编译

./configure--prefix=/usr/local/nginx-1.10.3--user=nginx--group=nginx--with-http_ssl_module--with-http_stub_status_module

检查

/usr/loca/nginx/sbin/nginx-t

启动

/usr/local/nginx/sbin/nginx

查看服务器是否启动

netstat-lntp|grepnginx

tcp000.0.0.0:800.0.0.0:*LISTEN      7058/nginx:master

接下来是配置nginx代理

首先我们先配置2台nginx服务器

1.先配置nginx.i4t.com nginx信息

#配置10.4.82.142 后端服务器

cat /usr/local/nginx/conf/nginx.conf

user  nginx;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include      mime.types;

    default_type  application/octet-stream;

log_format  main'$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;

    tcp_nopush    on;

    keepalive_timeout  65;

    gzip  on;

    server {

        listen      80;

        server_name  nginx.i4t.com;

        location / {

root  /usr/local/nginx/html;

        }

    }

}

echo"nginx.i4t.com">/usr/local/nginx/html/index.html

/usr/local/nginx/sbin/nginx -s reload

此时nginx.i4t.com域名访问如下

接下来配置后端服务器

代理服务器默认配置

10.4.82.140

以下是后端服务器默认配置

usernginx;

worker_processes1;

events{

worker_connections1024;

}

http{

includemime.types;

default_typeapplication/octet-stream;

log_formatmain'$remote_addr-$remote_user[$time_local] "$request" '

'$status$body_bytes_sent"$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_loglogs/access.log  main;

sendfileon;

keepalive_timeout65;

server{

listen80;

server_nametomcat.i4t.com;

location/ {

roothtml;

indexindex.html index.htm;

}

}

}

echo" tomcat.i4t.com">/usr/local/nginx/html/index.html

/usr/local/nginx/sbin/nginx  -s reload

tomcat.i4t.com后端服务器的访问内容如下

接下来我们将tomcat.i4t.com 也就是10.4.82.140进行配置权限

#只允许10.4.82.142访问

cat /usr/local/nginx/conf/nginx.conf

user  nginx;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include      mime.types;

    default_type  application/octet-stream;

    log_format  main'$remote_addr - $remote_user [$time_local] "$request" '

    '$status $body_bytes_sent "$http_referer" '

    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;

    tcp_nopush    on;

    keepalive_timeout  65;

    gzip  on;

    server {

        listen      80;

        server_name  tomcat.i4t.com;

        resolver 8.8.8.8;

        location / {

                    proxy_pass$scheme://$host$request_uri;

                    if($remote_addr!~*"10.4.82.142") {

                    return403;

        }

        root  /usr/local/nginx/html;

        }

    }

}

#proxy_pass $scheme://$host(请求的域名)$request_uri; 域名后面参数

#resolver DNS地址,可以不写

我们可以看到我们现在电脑已经无法访问tomcat.i4t.com,需要注意的是,我们只是修改了tomcat.i4t.com的代理,nginx.i4t.com依旧可以正常访问的

现在我们进行代理配置

windows配置如下

IE-->Internet选项-->连接-->局域网设置-->代理服务器

mac设置如下

Linux

exporthttp_proxy=http://10.4.82.142:80

wget http://tomcat.i4t.com

这时候我们访问tomcat.i4t.com就是200,状态

四、反向代理配置测试

安装和上面编译安装一样,没有特殊模块。只需要修改配置文件

cat/usr/local/nginx/conf/nginx.conf

user  www;

worker_processes1;

events{

worker_connections1024;

}

http{

includemime.types;

default_typeapplication/octet-stream;

log_formatmain'$remote_addr-$remote_user[$time_local] "$request" '

'$status$body_bytes_sent"$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_loglogs/access.log  main;

sendfileon;

tcp_nopushon;

keepalive_timeout65;

gzipon;

server{

listen80;

server_namenginx.i4t.com;

location/ {

proxy_passhttp://abcdocker;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

}

}

upstreamabcdocker {

server10.4.82.140:8080;

server127.0.0.1:8080;

}

}

#proxy_pass 代理节点,可以用ip+端口

#upstream 后面写名称

#server 后端节点名称

访问验证,我们访问nginx.i4t.com域名打开的是tomcat后端节点

请注意缓存(google浏览器缓存不是很好清理)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359