一: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服务器的反向代理功能的更多相关文章

  1. Nginx 之六: Nginx服务器的正向及反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  2. nginx的反向代理功能和缓存功能

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  3. Web服务器的反向代理nginx

    nginx作为web服务器一个重要的功能就是反向代理. Nginx配置详解   序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭 ...

  4. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解

    [转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...

  5. Nginx 反向代理功能-动静分离

    Nginx 反向代理功能-动静分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. Nginx 反向代理功能-实现Nginx tcp负载均衡

    Nginx 反向代理功能-实现Nginx tcp负载均衡 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Nginx 反向代理功能-实现http反向代理

    Nginx 反向代理功能-实现http反向代理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. 使用Nginx压缩文件、设置反向代理缓存提高响应速度

    Gzip压缩: 最开始,这个竟然要6m多(大到不寻常),响应的速度3分多钟. 所以先对返回的文件进行gzip压缩.判断返回的资源是否有使用gzip压缩,观察响应头部里面,如果没有 Content-En ...

  9. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

随机推荐

  1. Advanced Replication同步复制实验(基于Trigger&基于Materialized View)

    1. 高级复制和流复制介绍 1.1 高级复制(Advanced Replication) 高级复制也称为对称复制,分为多主体站点复制(Multiple Master Rplication).物化视图站 ...

  2. elk 数据存储

    让我们在集群中唯一一个空节点上创建一个叫做blogs的索引,默认情况下,一个索引被分配5个主分片, 但是为了演示的目的, 我们只分配3个主分片和一个复制分片(每个主分片都有一个复制分片): PUT / ...

  3. cocos2dx CCTextFieldTTF

    CCTextFieldTTF是一个提供文本输入的控件. 先上个简单的例子 CCSize size = __winSize; CCTextFieldTTF* textEdit = CCTextField ...

  4. cocos2d-x 多点触控实现缩放及相关问题的解决方法

    首先,来看下代码: 声明文件: #ifndef __loading__MoreTouches__ #define __loading__MoreTouches__ #include <iostr ...

  5. angular学习(一):动态模板总结

    近期在项目中用到了angular,之前从未用到过此js lib库,因为项目也比較着急,学习的寥寥草草.到眼下为止也仅仅是学会皮毛而已,现将自己学习的知识总结例如以下: 备注1: 版本:1.2.2 备注 ...

  6. Linux下并发网络设计之I/O复用

    I/O 流: 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作 ...

  7. SharePoint2010添加webpart找不到内容编辑器

    1.开启相关网站集功能.2.若还是找不到可以在其它有内容编辑器的站点下,在“Web 部件”中找到并下载内容编辑器,上传至本站点即可.

  8. fullPage.js插件用法(转发)

    fullPage.js主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速 ...

  9. Js闭包与循环

    目标:点击任何一个li,提示当前点击位置 <ul> <li>第1个</li> <li>第2个</li> <li>第3个</ ...

  10. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...