linuxea: Nginx动静分离的几种方式


这篇文章简单的介绍nginx proxy_pass和一些配置。仅作为参考使用。

proxy_pass属于ngx_http_proxy_module,此模块可以将请求发送到一台服务器上。proxy_pass放在location标签中,可使用http。如下:

location /poy{
   proxy_pass http://10.0.0.90;
}

参数:
proxy_set_header,(当后端web服务器上有多个虚拟主机,需要使用header来区分代理的主机名)获取用户的主机名或者真是IP,以及代理者的IP地址

server {
     listen       80;
     server_name  www.linuea123.com;
     location / {
         root   html;
         index  index.html index.htm;
     proxy_pass http://backend;
     proxy_set_header Host $host;
     }

获取用户的真是iP,截获客户请求地址(nginx开启即可,appche需要在LogFormat ""%{X-Forwareded-for}i\添加)
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr 获取用户的真是iP,截获客户请求地址
client_body_buffer_size:用于指导客户端请求主题缓冲区大小,用户访问先保存到本地在传递给用户
proxy_connect_timeout:表示与后端服务器连接的超时时间,既发起握手等待响应的超时时间
proxy_send_timeoit:表示后端服务数据返回最短时间,超过则断开
proxy_read_timeout:设置nginx从代理的后端服务器获取信息
proxy_buffer_size:设置缓存区大小,默认缓冲大小指令:proxy_buffers设置

location /poy{
           proxy_pass http://10.0.0.90;
            proxy_set_header Host $host;
}

proxy.conf如下:

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

目录和扩展名分离测试(还有浏览器的分离):

upstream jingtai {
    server 10.0.1.10:80 weight=5 max_fails=10 fail_timeout=10s;
    server 10.0.1.11:80 weight=5 max_fails=10 fail_timeout=10s;
}
upstream dongtai {
    server 10.0.2.10:80 weight=5 max_fails=10 fail_timeout=10s;
    server 10.0.2.11:80 weight=5 max_fails=10 fail_timeout=10s;
}
server {
    listen 80;
    server_name www.linuxea.com;
    location / {
        root html;
        index index.html index.htm;
        proxy_pass http://dongtai;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
}        
    location /image/ {
        proxy_pass http://jingtai;

I. 扩展名分离

location ~ .* (gif|jpg|jpeg|png|bmp|swf|css|js)$ {
    proxy_pass http://jingtai;
    include proxy.conf;
}
location ~ .*. (php|php3|php5.3)$ {
    proxy_pass httpd://jingtai;
    include proxy.conf;    
}

II. if

if($request_uri ~* ".*\.(jsp|jsp*|do|do*)$")
{
proxy_pas httpd://jingtai;
}

III. android-iphone

listen 80;
server_name app.linuxea.com;    
location / {
    if (http_user_agent ~* "android")
 {
proxy_pass http://android;
}
   if (http_user_agent ~* "iphone")
{
   proxu_pass http:/iphone;
}
   proxy_pass http://pc;
   include proxy.conf;
}

IV. proxy如下

proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
}
location /dongtai/ {
    proxy_pass http://dongtai;
proxy_redirect off;
        proxy_set_header Host $host;
        p2roxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
}
}

proxy参数
proxy_set_header Host $host; 用户请求的header传递给后端访问
p2roxy_set_header X-Real-IP $remote_addr;接收客户端ip,通过X-forwared给后端
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
代理和web超时响应参数如下:

proxy_connect_timeout 60;
proxy_send_timeout 30;
proxy_read_timeout 30;

内存和磁盘缓冲参数如下:

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
1 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2016-01-23分类: Nginx

标签: nginx

发表评论