一、基本概念
反向代理:
以代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
正向代理:
一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色。
正向代理和反向代理的区别:
二、反向代理配置
(一)、常用配置
server {
listen 8090; #服务端口号
server_name localhost; #服务名称
location / { #路由地址
proxy_pass http://127.0.0.1:8000; #转发地址
proxy_set_header Host $host; #可设置请求头-并将头信息传递到服务器端
proxy_set_header X-Real-IP $remote_addr; #把真实的ip 发送给 转发的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
}
location /send {
proxy_pass http://localhost:8080/doc_sign/toSend.action;
}
}
(二)、反向代理的路由策略
Location的配置:
语法:
location [=|~|~*|^~] /uri/ {…}
语法说明:
= 开头表示精确匹配,不支持正则。
^~ 开头表示uri以某个常规字符串开头,不支持正则,理解为匹配url路径即可。
~和~* 开头表示区分大小写的和不区分大小写的正则匹配。
!~和!~* 开头表示区分大小写不匹配及不区分大小写不匹配的正则匹配。
/ 通用匹配,任何请求都会匹配,通常放着配置的最后。
匹配优先级:
= > ^~ > ~, ~* > 空
全匹配 > 路径匹配 > 正则匹配 > 字符串匹配
示例:
# 字符串匹配
location /static {
alias /home/www/static;
access_log off;
}
# 路径匹配,此时proxy_pass的结束 / 决定是否带上匹配的路径
location ^~ /333/ {
proxy_pass http://106.185.48.229/;
}
# 正则匹配,此时proxy_pass不能带结束 /
location ~ ^/(xxx|yyy)/ {
proxy_pass http://106.185.48.229;
}
# 字符串匹配,此时proxy_pass的结束 / 决定是否带上匹配得路径
location /zzz/ {
proxy_pass http://106.185.48.229/;
}
# 默认匹配
location / {
proxy_pass http://127.0.0.1:8080;
}
更多文章请关注公众号:程序员的事儿。
本文暂时没有评论,来添加一个吧(●'◡'●)