代理常见模式
1 2 3 |
Nginx作为代理服务,按照应用场景模式进行总结,代理分为 1.正向代理 2.反向代理 |
1)正向代理
1 |
正向代理,(内部上网)客户端<—>代理->服务端 |
2)反向代理
1 |
反向代理,用于公司集群架构中,客户端->代理<—>服务端 |
3)正向代理与反向代理区别
1 2 3 |
1.区别在于形式上服务的"对象"不一样 2.正向代理代理的对象是客户端,为客户端服务 3.反向代理代理的对象是服务端,为服务端服务 |
支持的协议

代理的模式

代理模块
反向代理模式 | Nginx配置模块 |
---|---|
http、websocket、https、tomcat(java程序) | ngx_http_proxy_module |
fastcgi(PHP程序) | ngx_http_fastcgi_module |
uwsgi(python程序) | ngx_http_uwsgi_module |
grpc(go程序)(golang) | ngx_http_v2_module |
Nginx代理常用参数
添加发往后端服务器的请求头信息
1 2 3 4 5 6 7 8 9 10 11 |
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; # 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
代理到后端的TCP连接、响应、返回等超时时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#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代理超时时间 Syntax: proxy_send_timeout time; Default: proxy_send_timeout 60s; Context: http, server, location |
proxy_buffer代理缓冲区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#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 |
配置代理
1 2 3 4 5 6 7 8 9 10 |
[root@lb01 ~]# vim /etc/nginx/conf.d/daili.conf server { listen 80; server_name linux.proxy.com; location / { proxy_pass http://10.0.0.7:80; include /etc/nginx/proxy_params; } } |
配置优化文件
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@lb01 ~]# 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; |