前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx反向代理

nginx反向代理

作者头像
张琳兮
发布2019-03-14 11:56:38
9520
发布2019-03-14 11:56:38
举报
文章被收录于专栏:首富手记

nginx反向代理

1,代理分为哪几种代理?

代理分为正向代理、反向代理和透明代理

2,什么是正向代理?

nginx反向代理
nginx反向代理

通俗来讲,正向代理就是用户请求www.sentinel.com这个网站的时候(请求服务器B),然后由服务器A帮他转发请求。他认为服务器B是实际存放资源。 我们总结一下 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。 正向代理代理的是客户端。

3,什么反向代理?

nginx反向代理
nginx反向代理

用户认为服务器A就是一个真正的web服务器,虽然资源不在他身上,他需要去请求服务器B拿到用户请求的资源,但是客户端这个时候不知道,他就认为他请求的内容就是服务器A给他返回的。 反向代理带的是服务端

Nginx当作代理服务器proxy

客户端发出请求到代理服务器上,然后代理服务器帮他去后台请求资源,客户端认为代理服务器就是原始的web服务。然后由反向代理服务器去帮他请求资源。

nginx反向代理
nginx反向代理

1,反向代理的核心配置

代码语言:javascript
复制
Syntax:     proxy_pass URL;
Default:    —
Context:    location, if in location, limit_except
proxy_pass http://ip:port;原始服务器的地址,可以写多个

2,反向代理并更换请求的URI

代码语言:javascript
复制
//别人来请求tets.sentinel.org/ceshi的时候我们让他去请求服务上的test目录
[root@lb01-5 vhost]# cat test.conf 
server {
    listen 80;
    server_name test.sentinel.org;
    location /ceshi {
        proxy_pass http://10.0.0.7/test/;
        include proxy_params;
    }
}

//真实站点的配置信息
[root@web01-7 vhost]# cat test.conf 
server {
    listen 80;
    server_name test.sentinel.org;
    location / {
        root /;
        index index.html;
    }
}
[root@web01-7 vhost]# cat /test/index.html 
<h1>172.16.1.7/test/index.php</h1>
[root@web01-7 vhost]# ll -d /ceshi
ls: cannot access /ceshi: No such file or directory

测试结果如下,当我们请求/ceshi的时候负载均衡

nginx反向代理
nginx反向代理
nginx反向代理
nginx反向代理

3,添加发往后端服务器的请求头信息

代码语言:javascript
复制
Syntax:     proxy_set_header field value;
Default:    proxy_set_header Host $proxy_host;
            proxy_set_header Connection close;
Context:    http, server, location

# 用户请求的时候HOST的值是www.sentinel.org, 那么代理服务会像后端传递请求的还是www.sentinel.org
proxy_set_header Host $http_host;
# 将$remote_addr的值放进变量X-Real-IP中,$remote_addr的值为客户端的ip
proxy_set_header X-Real-IP $remote_addr;
# 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

未开启proxy_set_header Host $http_host 选项的结果

nginx反向代理
nginx反向代理
nginx反向代理
nginx反向代理

开启了proxy_set_header Host $http_host 选项的结果

nginx反向代理
nginx反向代理
nginx反向代理
nginx反向代理

4,代理到后端的TCP连接,响应,返回等超时时间 proxy_conne_timeout 30s; proxy_read_timeout 60s; proxy_send_timeout 60s;

代码语言:javascript
复制
//nginx代理与后端服务器连接超时时间(代理连接超时)还未连接成功
Syntax:  proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location

//nginx代理等待后端服务器的响应时间(连接成功,等待读取资源)
Syntax:  proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location

//后端服务器数据回传给nginx代理超时时间(后段服务器给nginx传输资源的时间)
Syntax:  proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location

5,proxy_buffer代理缓冲区

代码语言:javascript
复制
//nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
Syntax:  proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location

//设置nginx代理保存用户头信息的缓冲区大小
Syntax:  proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location

//proxy_buffers 缓冲区
Syntax:  proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location

6,proxy代理网站常用优化配置如下,将配置写入新文件,调用时使用include引用即可

代码语言:javascript
复制
[root@Nginx ~]# vim /etc/nginx/proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

//如何调用
location / {
    proxy_pass http://10.0.0.10:80;
    include proxy_params;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nginx反向代理
    • Nginx当作代理服务器proxy
    相关产品与服务
    负载均衡
    负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档