Nginx代理服务常见模式
1.反向代理
2.正向代理
正向代理与反向代理的区别
1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务
Nginx代理服务支持协议
反向代理使用协议
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4xjG6A2f-1577170146536)(https://www.driverzeng.com/wp-content/uploads/2019/08/15658755446851.jpg)] | 反向代理模式 | Nginx配置模块 | | ---------------------------------------- | ----------------------- | | http、websocket、https、tomcat、java程序 | ngx_http_proxy_module | | fastcgi(php程序) | ngx_http_fastcgi_module | | uwsgi(python程序) | ngx_http_uwsgi_module | | grpc(golang程序) | ngx_http_v2_module |
nginx代理实战
1.web01搭建一个站点
1)配置nginx
[root@web01 conf.d]# vim proxy.conf
server {
listen 80;
server_name proxy.linux.com;
location / {
root /code/proxy;
index index.html;
}
}
[root@web01 conf.d]# systemctl restart nginx
2)创建站点目录
[root@web01 conf.d]# mkdir /code/proxy
3)创建站点文件
[root@web01 conf.d]# echo 'web01......' > /code/proxy/index.html
[root@web01 conf.d]# chown -R www.www /code/proxy/
2.lb01配置代理
1)安装nginx
2)配置nginx代理
[root@lb01 conf.d]# vim proxy.conf
server {
listen 80;
server_name proxy.linux.com;
location / {
proxy_pass http://10.0.0.7:80;
}
}
[root@lb01 conf.d]# systemctl start nginx
3)本地配置hosts访问
4)当web服务器有多个站点配置的时候,返回的页面为配置文件的第一个
#修改配置
[root@lb01 conf.d]# vim proxy.conf
server {
listen 80;
server_name proxy.linux.com;
location / {
proxy_pass http://10.0.0.7:80;
proxy_set_header HOST $http_host;
}
}
[root@lb01 conf.d]# systemctl restart nginx
nginx代理优化
1)日志获取真实地址
#修改配置
[root@lb01 conf.d]# vim proxy.conf
server {
listen 80;
server_name proxy.linux.com;
location / {
proxy_pass http://10.0.0.7:80;
proxy_set_header HOST $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2)代理到后端的TCP连接、响应、返回等超时时间
//客户端到代理服务器的超时时间(代理连接超时)
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
3)proxy_buffer代理缓冲区
//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
4)优化后配置
[root@lb01 ~]# vim /etc/nginx/conf.d/proxy.conf
server {
listen 80;
server_name proxy.linux.com;
location / {
proxy_pass http://10.0.0.7;
include proxy_params;
}
}
[root@lb01 ~]# vim /etc/nginx/proxy_params
proxy_set_header HOST $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 8k;