Nginx代理服务基本概述
代理:
代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示
没有代理情景
在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务端,服务端直接响应客户端。
企业场景
那么在互联网请求里面,客户端往往无法直接向服务端发起请求,那么就需要用到代理服务,来实现客户端和服务通信,如下图所示*
Nginx代理服务常见模式
Nginx作为代理服务,按照应用场景模式进行总结,代理分为正向代理、反向代理
正向代理
正向代理,(内部上网)客户端<—>代理->服务端*
反向代理
反向代理,用于公司集群架构中,客户端->代理<—>服务端*
正向代理与反向代理的区别
1.区别在于形式上服务的”对象”不一样*
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务
Nginx代理服务支持协议
Nginx作为代理服务,可支持的代理协议非常的多,具体如下图
反向代理使用协议
如果将Nginx作为反向代理服务,常常会用到如下几种代理协议,如下图所示*

模块总结
反向代理模式与Nginx代理模块总结如表格所示*
反向代理模式 | Nginx配置模块 |
---|---|
http、websocket、https | ngx_http_proxy_module |
fastcgi | ngx_http_fastcgi_module |
uwsgi | ngx_http_uwsgi_module |
grpc | ngx_http_v2_module |
Nginx反向代理配置语法
代理配置语法
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
http://localhost:8000/uri/
http://192.168.56.11:8000/uri/
http://unix:/tmp/backend.socket:/uri/
url跳转修改返回location
url
跳转修改返回Location
[不常用]
参考下载站点:http://test.driverzeng.com/Nginx_File/
Syntax: proxy_redirect default;
proxy_redirect off;proxy_redirect redirect replacement;
Default: proxy_redirect default;
Context: http, server, location
添加发往后端服务器的请求头信息
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
# 用户请求的时候HOST的值是www.oldboy.com, 那么代理服务会像后端传递请求的还是www.oldboy.com
proxy_set_header Host $http_host;
# 将$remote_addr的值放进变量X-Real-IP中,$remote_addr的值为客户端的ip
proxy_set_header X-Real-IP $remote_addr;
# 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录