0%

Nginx配置反向代理

Nginx配置反向代理

在server块中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#监听80端口
listen 80;
#监听的ip或域名
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
# 转发到127.0.0.1:8080
proxy_pass http://127.0.0.1:8080;
}

也可以根据访问路径的不同来访问不同的服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 8000;
server_name localhost;
#项目的目录
root /www/work/;
# 路径中包含/springmvc/则跳转至8080端口
#~表示后边是正则表达式
location ~ /springmvc/ {
root html;
index index.html index.htm;
# 转发到http://127.0.0.1:8080
proxy_pass http://127.0.0.1:8080;
}

# 路径中包含/webstudy/则跳转至8081端口
location ~ /webstudy/ {
root html;
index index.html index.htm;
# 转发到http://127.0.0.1:8081
proxy_pass http://127.0.0.1:8081;
}
}

※proxy_pass

proxy_pass将请求传递给HTTP服务器,这个也是用的最多的

  • proxy_pass http://baidu.com; # 设置被代理服务器的地址

  • proxy_redirect off; # 用于修改被代理服务器返回响应头中的location和refresh头,与proxy_pass搭配,修改响应头Location值,off表示直接返回proxy_pass后的值,默认为default(客户端请求的URI)

  • proxy_pass_header field; #默认情况下,nginx服务器在发送响应报文时,报文头中不包含”Date”、”Server”、”X-Accel”等来自被代理服务器的头域信息,该指令可以设置这些头域信息以被发送,field为需要发送的头域

  • proxy_hide_header field; 用于设置nginx服务器在发送http响应时,隐藏一些头域信息,field为要隐藏的头

  • proxy_pass_request_body on | off; 用于配置是否将客户端请求的请求体发送给代理服务器,默认开启

  • proxy_pass_request_headers on | off; 用于配置是否将客户端请求的请求头发送给代理服务器,默认开启

  • proxy_set_header field value; 可以更改nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给被代理的服务器,field为要更改的请求头,value为值

  • proxy_connect_timeout 600;# 设置Nginx服务器与后端被代理服务器尝试建立连接的超时时间,默认为60s

  • proxy_read_timeout 600; # 设置Nginx服务器向后端被代理服务器发出read请求后,等待响应的超时时间,默认为60s

  • proxy_send_timeout 600; # 设置Nginx服务器向后端被代理服务器发出write请求后,等待响应的超时时间,默认为60s

  • proxy_method method; 设置nginx服务器被代理服务器时使用的请求方法,如POST、GET等

  • proxy_ignore_headers field … ; 用于设置一些http响应头中的头域,nginx服务器接收到被代理服务器的响应数据后,不会处理被设置的头域

  • proxy_buffering: on; # 设置是否开启Proxy Buffer,默认为on

  • proxy_buffer_size 8k; # 设置Nginx服务器从被代理服务器获取的第一段数据buffer大小,一般和proxy_buffers设置的buffer大小一致,或者更小, 默认为4k或者8k

  • proxy_buffers 4 32k; # 设置Proxy Buffer的个数和每个Buffer的大小

  • proxy_busy_buffers_size 64k; # 设置处在Busy状态的Buffer总大小上限,默认为8K或者16K

  • proxy_temp_file_write_size 64k; #当超过内存允许大小时,存到临时文件

  • proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; # upstream设置被代理服务器集群时,设置组内服务器出现哪些异常时,可以依次轮询到下一个组内服务器处理

  • proxy_set_body value; 更改nginx服务器接收到的客户端请求的请求体信息,然后将新的请求体发送给代理的服务器

fastcgi_pass

fastcgi_pass将请求传递给FastCGI服务器

1
2
3
4
5
6
7
8
9
fastcgi_connect_timeout 3000;
fastcgi_send_timeout 3000;
fastcgi_read_timeout 3000;
fastcgi_buffer_size 200k;
fastcgi_buffers 8 200k;
fastcgi_busy_buffers_size 200k;
fastcgi_max_temp_file_size:1024M; # 设置临时文件大小,默认为1024M
fastcgi_temp_file_write_size 200k;# 配置同时写入临时文件的数据量的大小,合理的配置可以避免磁盘IO负载过高,导致系统性能下降,默认为8KB或16KB
fastcgi_temp_path /dev/shm; # 配置磁盘上的一个文件路径,用于临时存放代理服务器的大体积响应数据,如果proxy buffer 被装满后,响应数据仍然没有被Nginx服务器完全接收,响应数据就被会临时存放在该文件中

uwsgi_pass

uwsgi_pass将请求传递给uwsgi服务器(如python服务)

scgi_pass

scgi_pass将请求传递给SCGI服务器

memcached_pass

memcached_pass将请求传递给memcached服务器

欢迎关注我的其它发布渠道