nginx反向代理

关于反向代理,这是百度百科中的定义:

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。

nginx中反向代理模式与使用模块总结:

反向代理模式

nginx配置模块

http, websocket, https

​ngx_http_proxy_module​

fastcgi

​ngx_http_fastcgi_module​

uwsgi

​ngx_http_uwsgi_module​

代理配置语法:

location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

实例:

代理服务器配置:

server{
listen 80;
server_namne www.daili.com;
location / {
proxy_pass http://localhost:8080;
}
}

被代理服务器配置:

server {
listen 8080;
server_name www.myserver.com;
location / {
...
}
}

参数优化

server{
listen 80;
server_namne www.myserver.com;
location / {
proxy_pass http://localhost:8080;
# 把域名设置到请求头,请后台也可以识别域名
# 如果不设置,通过ip匹配第一个虚拟主机...
proxy_set_header Host $host;
# 把真实用户的ip带到后端,可以在日志中使用
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 一次tcp可以发起多次http请求
proxy_http_version 1.1;
# 超时设置
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

# nginx先把后端接收到的内容存入缓冲区,然后再传给客户,边收边传
proxy_buffering on;
# 头部信息缓冲区大小,缓存用户头部信息(比如:Host)
proxy_buffer_size 32k;
# 缓冲区的大小
proxy_buffers 8 128k; # 一个缓冲区
}
}

proxy_prams提取优化的参数

# proxy_params
# 把域名设置到请求头,请后台也可以识别域名
# 如果不设置,通过ip匹配第一个虚拟主机...
proxy_set_header Host $host;
# 把真实用户的ip带到后端,可以在日志中使用
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 一次tcp可以发起多次http请求
proxy_http_version 1.1;
# 超时设置
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

# nginx先把后端接收到的内容存入缓冲区,然后再传给客户,边收边传
proxy_buffering on;
# 头部信息缓冲区大小,缓存用户头部信息(比如:Host)
proxy_buffer_size 32k;
# 缓冲区的大小
proxy_buffers 8 128k; # 一个缓冲区

使用include包含

server{
listen 80;
server_namne www.myserver.com;
location / {
proxy_pass http://localhost:8080;
include proxy_params;
}
}