Nginx 之六: Nginx服务器的正向及反向代理功能
一:Nginx作为正向代理服务器:
1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代理不支持从外网向内网访问资源,一般很少用,经本人测试,效果也不好,有很多页面打不开,在百度搜索的页面也无法返回。
server {
server_name localhost;
resolver 202.106.0.20 8.8.8.8; #只能有一个resolve,但是可以用空格隔开,继续写下一个
resolver_timeout 5s;
listen ;
location / {
proxy_pass $scheme://$http_host/$request_uri;
proxy_set_header Host $http_host;
proxy_buffers 4k;
proxy_max_temp_file_size ;
proxy_connect_timeout ;
proxy_cache_valid 10m;
proxy_cache_valid 1h;
proxy_cache_valid any 1m;
}
}
2.错误码502 :Nginx作为代理服务器向后端转发请求过程中超时。

二:Nginx作为反向代理服务器:
反向代理:反向代理也叫reverse proxy,指的是代理外网用户的请求到内部的指定web服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。
反向代理的常用指令:
1.proxy_pass:用来设置将请求转发给的后端服务器的主机,可以是主机名、IP地址:端口的方式,也可以代理到通过upstream设置的主机组,如下:
upstream webserver {
#ip_hash;
server 192.168.0.201 weight= max_fails= fail_timeout=;
server 192.168.0.202 weight= max_fails= fail_timeout=;
server 127.0.0.1: backup;
}
server {
server_name hfnginx.chinacloudapp.cn;
#access_log logs/host.access.log main;
location / { #静态网页在本机
root html;
index index.html;
}
location ~* ^/form { #指定目录在后端服务器
proxy_pass http://webserver; #此处http://webserver后面不能加/,如果加了会提示语法错误
proxy_set_header X-Real-IP $remote_addr;
}
}
2:proxy_hide_header:用于nginx服务器作为反向代理的时候,在返回给客户端http响应的时候,隐藏后端服务版本(如php版本)的信息,可以设置在http/server或location块,如下:
Nginx会将上游服务器的响应转发给客户端,但默认不会转发以下HTTP头部字段:Date、Server、X-Pad和X-Accel-*。使用proxy_hide_header后可以任意地指定哪些HTTP头部字段不能被转发。例如:
proxy_hide_header Cache-Control;
proxy_hide_header MicrosoftOfficeWebServer;
注:如果是nginx直接作为web服务器,要隐藏版本信息的话,使用fastcgi_hide_header:
3:proxy_pass_header:与proxy_hide_header功能相反,proxy_pass_header会将原来禁止转发的header设置为允许转发,可以设置在http/server或location块例如:
proxy_pass_header X-Accel-Redirect;
4:proxy_pass_request_body:是否向后端服务器发送HTTP包体部分,可以设置在http/server或location块,如下:
proxy_pass_request_body on|off; #默认为on
5:proxy_pass_request_headers:是否将客户端的请求头部转发给后端服务器,可以设置在http/server或location块,如下:
proxy_pass_request_headers on | off; #默认为on
6:proxy_set_header:可以更改或添加客户端的请求头部信息内容,并转发之后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部,如下:
proxy_set_header HOST $remote_addr; #添加HOST到报文头部,其值为客户端的公网IP地址
7:proxy_set_body:更改nginx服务器接收到的客户端请求的请求内容,然后将修改后的请求转发给后端的服务器,用法如下:
proxy_set_body value; #其中value为要修改的目标内容,可以是变量、文本或者变量的组合。
8:proxy_ip:Nginx 0.8.22版本及以上支持此功能,用于Nginx配置了多个基于域名或IP的主机的情况下,可以指定代理连接到特定的主机处理,就是强制将客户端请求绑定到指定的IP地址:
proxy_bind x.x.x.x;
9:proxy_connect_timeout:配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒,用法如下:
proxy_connect_timeout 10s; #10s为自定义nginx与后端服务器建立连接的超时时间
10:proxy_read_time:配置nginx服务器向后端服务器或服务器组发起read请求后,等待的超时时间:
proxy_read_time 10s; #默认为60秒
11:proxy_send_time; 配置nginx项后端服务器或服务器组发起write请求后,等待的超时时间:
proxy_send_time 10s; #默认为60s
12:proxy_http_version:用于设置nginx提供代理服务的HTTP协议的版本:
proxy_http_version 1.0|1.1;
13:proxy_method:设置nginx服务器请求后端服务器时使用的方法,一般为POST或者GET,客户端的请求方法将被忽略:
proxy_method GET|PUT;
14:proxy_ignore_client_abort:设置在客户端网络中断请求时,nginx服务器是否中断对被代理服务器的请求:
proxy_ignore_client_abort off|on; #默认为off,当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。
15:proxy_ignore_headers:设置nginx不处理后端服务器返回的数据中包含某些指定字段的报文,可以指定的有:”X-Accel-Redirect”, “X-Accel-Expires”, “Expires”或”Cache-Control”:
proxy_ignore_headers Expires;
16:proxy_redirect:修改后端服务器返回的响应头部中的location货refresh,与proxy_pass配合使用:
17:proxy_intercept_errors:设置nginx服务器返回客户端的错误状态,当后端服务器返回大于等于400的错误码的是,如果本功能是打开的,则nginx服务器返回自定义的错误页面(使用error page定义的),如果没有开启就将后端服务器返回的HTTP状态直接返回给客户端,默认为关闭:
proxy_intercept_errors on | off;
18:proxy_headers_hash_max_size:设置nginx保存HTTP报文头的hash表的上限,默认为512字节:
proxy_headers_hash_bucket_size 512;#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节
proxy_headers_hash_max_size ; #上限
server_names_hash_max_szie 512; #设置服务器名称的上限
server_namse_hash_bucket_size 512; #申请空间大小
19:proxy_headers_hash_bucket_size:#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节
proxy_headers_hash_bucket_size ; #默认为64字节
20:proxy_net_upstream:当使用了upstream的时候,可以定义在发生了特定的情况下将请求依次交给下一个组内的服务器处理,状态包括:
proxy_next_upstream http_404 http_502; //让404报错进入max_fails计数
upstream online {
sticky;
server 172.28.70.161: max_fails= fail_timeout=3s ;
server 172.28.70.163: max_fails= fail_timeout=3s ; check interval= rise= fall= timeout= type=http;
check_http_send "GET / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
} upstream backup {
server 172.28.22.29: max_fails= fail_timeout=3s;
}
21:proxy_ssl_session_reuse:配置是否基于SSL协议与后端服务器建立连接,如下:
proxy_ssl_session_reuse on | off;
Nginx 之六: Nginx服务器的正向及反向代理功能的更多相关文章
- Nginx服务器部署 负载均衡 反向代理
Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...
- 【nginx网站性能优化篇(2)】反向代理实现Apache与Nginx的动静分离(LNMPA)
为什么要使用反向代理 具体请参考这篇博文:[Linux常识篇(1)]所谓的正向代理与反向代理 在虚拟机上配置反向代理的步骤 首先假设你已经假设好了LNMP架构了,这时我们还要安装Apache和php, ...
- nginx的反向代理功能和缓存功能
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- nginx在使用非80端口做反向代理【转】
设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ...
- 生产环境中nginx既做web服务又做反向代理
一.写对于初入博客园的感想 众所周知,nginx是一个高性能的HTTP和反向代理服务器,在以前工作中要么实现http要么做反向代理或者负载均衡.尚未在同一台nginx或者集群上同时既实现HTTP又实现 ...
- Nginx 反向代理功能-动静分离
Nginx 反向代理功能-动静分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Nginx 反向代理功能-实现Nginx tcp负载均衡
Nginx 反向代理功能-实现Nginx tcp负载均衡 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Nginx 反向代理功能-实现http反向代理
Nginx 反向代理功能-实现http反向代理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- openresty开发系列2--nginx的简单安装,正向、反向代理及常用命令和信号控制介绍
openresty开发系列2--nginx的简单安装,正向.反向代理及常用命令和信号控制介绍 一.nginx的安装下载及编译安装1.Nginx下载:nginx-1.13.0.tar.gz,下载到:/u ...
随机推荐
- 【Sichuan 2017D】Dynamic Graph
题意 300个点的无环图,开始都是白色,每次改变某个节点的颜色(黑/白),问有多少对白点之间存在只有白点的路径. 题解 类似floyd,求出两点之间的路径条数.然后白到黑就删去对应路径,黑到白就增加对 ...
- WC2019 题目集
最近写的一些 WC2019 上讲的一些题.还是怕忘了,写点东西记录一下. LOJ2983 「WC2019」数树 题意 本题包含三个问题: 问题 0:已知两棵 \(n\) 个节点的树的形态(两棵树的节点 ...
- yyb省选前的一些计划
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...
- SP8791 DYNALCA - Dynamic LCA 解题报告
SP8791 DYNALCA - Dynamic LCA 有一个森林最初由 \(n (1 \le n \le 100000)\) 个互不相连的点构成 你需要处理以下操作: link A B:添加从顶点 ...
- 「TJOI2015」组合数学 解题报告
「TJOI2015」组合数学 这不是个贪心吗? 怎么都最小链覆盖=最大点独立集去了 注意到一个点出度最多只有2,可以贪心一下出度的去向 按读入顺序处理就可以,维护一个\(res_i\)数组,表示上一行 ...
- [ZJOI2016]小星星&[SHOI2016]黑暗前的幻想乡(容斥)
这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. ...
- [ZJOI2007]仓库建设(斜率优化)
L公司有N个工厂,由高到底分布在一座山上. 工厂1在山顶,工厂N在山脚. 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用. 突然有一天,L公司的总裁L先生接到气象部 ...
- urls 管理
问题阐述:如何管理多个app下的路由分发,使得管理更加清晰? 1. 在app下创建urls.py文件 from django.conf.urls import url from django.urls ...
- Cannot read property 'properties' of undefined
今天运行一个很有意思的项目,报上面的错 根据报错,可以发现,报错出现在项目文件夹下的node_modules\webpack-cli\bin\config-yargs.js文件第89行. 当前webp ...
- Nginx.conf配置文件参数说明与优化
参考连接:nginx 核心配置优化详解 先说下优化 1.nginx运行工作进程个数 worker_processes 1; Nginx进程,一般设置为和cpu核数一样(nginx启动后有多少个wor ...