首页 > 代码库 > nginx反向代理配置过程

nginx反向代理配置过程

反向代理从传输上分可以分为2种:同步模式(apache-mod_proxy和squid)    异步模式(lighttpd 和 nginx)

同步传输:浏览器发起请求,而后请求会立刻被转到后台,于是在浏览器和后台之间就建立了一个通道。在请求发起直到请求完成,这条通道都是一直存在的。
异步传输:浏览器发起请求,请求不会立刻转到后台,而是将请求数据(header)先收到nginx上,然后nginx再把这个请求发到后端,后端处理完之后把数据返回到nginx上,nginx将数据流发到浏览器,这点和lighttpd有点不同,lighttpd是将后端数据完全接收后才发送到浏览器。

小结:apache和squid的反向会增加后端web的负担,因为每个用户请求都会在proxy上与后端server建立的长久链接,知道数据取完前,连接都不会消失。因为wan速度与lan速度的不同,虽然lan之间的速度是极度快的,但是用户的wan连接决定了这个时间长。而lighttpd和nginx的异步模式,是不管你用户要求的数据有多大,都是先收下来,再与后端联系,这是非常迅速的速度,所以proxy与后端连接时间也会很短,几十M的东西也是几秒内。后端不需要维护这么多连接。而lighttpd也和nginx不同的异步,lighttpd是先收完再转向客户浏览器,而nginx是边收数据边转向用户浏览器。



环境:

两台私网web服务器ip:192.168.1.12 静态html网页    ip192.168.1.13  动态php网页  

一台代理服务器私网ip:192.168.1.11 公网ip202.106.0.1  

一台公网客户ip:202.106.0.20

需求:

1:公网客户可以通过nginx代理服务器访问公司主页www.sw.com

2nginx可以实现动态和静态网页分离访问不同web服务器

3:防防盗链

实现步骤:

1:服务器上安装nginx源码包程序,设置为开机启动,备份主配置文件

[root@1.11 ~]# useradd  -M -s /sbin/nologin nginx                //添加系统用户nginx,无家目录和禁止登录

[root@1.11 ~]#yum -y install gcc gcc-c++ make pcrc-devel openssl-devel   //安装编译环境开发包

[root@1.11 ~]#mkdir /nginx                                                    //创建存放文件夹

[root@1.11 nginx-0.8.55]# ./configure --prefix=/nginx \        //转换源码,指定安装目录

>--user=nginx --group=nginx                                                  //指定进程属主,属组

>--with-http_stub_status_module --with-http_ssl_module;    //加载查看状态模块,ssl模块

[root@1.11 nginx-0.8.55]# make  && make install                //编译安装

[root@1.11 ~]# vim /etc/rc.local                  //添加到开机启动脚本

/nginx/sbin/nginx


[root@1.11 ~]# cp -p /nginx/conf/{nginx.conf,nginx.conf.bak}  //备份主配置文件

2:配置主配置文件,重启服务  

[root@1.11 ~]# vim /nginx/conf/nginx.conf

...  
3 worker_processes  1;                    //进程个数,建议和cpu核数相同
...
12 events {
13     worker_connections  1024;    //每进程最大并发连接数
14 }
...
17 http {
...
20     upstream web {                    //定义web地址池组    
21     server 192.168.1.12:80   weight=4;         //此台权重为4,轮询时访问比例为4:1
22     server 192.168.1.13:80;
23     ip_hash;                              //让同ip地址访问同一个web服务器
24         }
...
122     server {
123         listen     80;
124         server_name  www.sw.com;
125         location / {
128            proxy_pass http://web;                        //调用web地址池
129         }
130         location ~*  \.php$ {                //当访问结尾是php时,代理到192.168.1.13
131            proxy_pass http://192.168.1.13;
132  client_max_body_size 10m;                   //允许客户端请求的最大单文件字节数
133            client_body_buffer_size 128k;     //缓冲区代理缓冲用户端请求的最大字节数,
134            proxy_connect_timeout 90;    //nginx跟后端服务器连接超时时间(代理连接超时)
135            proxy_send_timeout 90;           //后端服务器数据回传时间(代理发送超时)
136            proxy_read_timeout 90;      //连接成功后,后端服务器响应时间(代理接收超时)
137            proxy_buffer_size 4k;  //设置代理服务器(nginx)保存用户头信息的缓冲区大小
138            proxy_buffers 4 32k;        //proxy_buffers缓冲区,网页平均在32k以下的设置
139            proxy_busy_buffers_size 64k;        //高负荷下缓冲大小(proxy_buffers*2)
140            proxy_temp_file_write_size 64k; //设定缓存大于这个值,将从upstream服务器传
141         }
142         location ~* \.(gif|png|jpg|mp3|rm|flv)$ {   //防盗链,只允许本域直接访问
143         valid_referers none blocked .sw.com;
144         if ($invalid_referer) { rewrite ^/ http://192.168.1.11/error.htm;}
145         }
146       }
...
156 }


[root@1.11 ~]#/nginx/sbin/nginx -s stop                          //停止服务

[root@1.11 ~]#/nginx/sbin/nginx                                     //启动服务

 

 

 

 


本文出自 “sleepcat” 博客,请务必保留此出处http://sw5720.blog.51cto.com/8812314/1440079

nginx反向代理配置过程