Nginx代理服务

Nginx代理服务概述

代理我们往往并不陌⽣, 该服务我们常常⽤到如(代理租房、代理收货等等)
火车票代售点、代购、第三方
在这里插入图片描述
那么在互联⽹请求⾥⾯, 客户端⽆法直接向服务端发起请求, 那么就需要⽤到代理服务, 来实现客户端和服务通信
在这里插入图片描述
Nginx 作为代理服务可以实现很多的协议代理, 我们主要以 http 代理为主
在这里插入图片描述
正向代理(内部上⽹) 客户端<–>代理->服务端
1、客户端知道代理服务器的存在
2、一般用于公司客户端上网
在这里插入图片描述
反向代理 客户端->代理<–>服务端
1、客户端不知道代理的存在
2、代理一般是由服务端设置,加快客户端的访问速度的
在这里插入图片描述

代理区别
区别在于代理的对象不⼀样
正向代理代理的对象是客户端
反向代理代理的对象是服务端


Nginx代理配置语法

1.Nginx 代理配置语法

Syntax: proxy_pass URL; 
Default: — 
Context: location, if in location, limit_except 

http://localhost:8000/uri/ 
http://192.168.1.2:8000/uri/ 
http://unix:/tmp/backend.socket:/uri/

2.类似于 nopush 缓冲区

//尽可能收集所有头请求, 
Syntax: proxy_buffering on | off; 
Default: 
proxy_buffering on; 
Context: http, server, location

//扩展: 
proxy_buffer_size 
proxy_buffers 
proxy_busy_buffer_size

3.跳转重定向

Syntax: proxy_redirect default; 
proxy_redirect off;proxy_redirect redirect replacement; 
Default: proxy_redirect default; 
Context: http, server, location

NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。
以例子说明: 

   server {
    
       listen       80; 
       server_name  test.abc.com; 
       location / {
    
            proxy_pass http://10.10.10.1:9080; 
       } 
   }
这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 
抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。
因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。 

proxy_redirect     http://test.abc.com:9080/      /

   server {
    
       listen       80; 
       server_name  test.abc.com; 
       proxy_redirect http://test.abc.com:9080/ /; 
       location / {
    
            proxy_pass http://10.10.10.1:9080; 
       } 
   }

4.头信息

Syntax: proxy_set_header field value; 
Default: proxy_set_header Host $proxy_host; 
proxy_set_header Connection close; 
Context: http, server, location 
//扩展: 
proxy_hide_header 
proxy_set_body

客户端请求web服务,客户端:
ip:192.168.1.3
nginx作为反向代理服务器:
192.168.1.1
nginx作为后端web服务器:
192.168.1.2

proxy_set_header Host $host;  $host就是nginx代理服务器,也就是客户端请求的host。
proxy_set_header Host $proxy_host; proxy_host就是代理服务器请求的host也就是后端服务器208

proxy_set_header X-Real-IP $remote_addr; $remote_addr的值为客户端的ip

proxy_set_header Host $host:$proxy_port; $host代表转发服务器,$proxy_port代表207转发服务器请求后端服务器的端口,也就是80

5.代理到后端的 TCP 连接超时

Syntax: proxy_connect_timeout time; 
Default: proxy_connect_timeout 60s; 
Context: http, server, location 
//扩展 
proxy_read_timeout /
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值