Home > Operation and Maintenance > Nginx > How to use Nginx_geo module to implement CDN scheduling

How to use Nginx_geo module to implement CDN scheduling

WBOY
Release: 2023-05-30 10:27:18
forward
1437 people have browsed it

Introducing the geo module of nginx

The geo instruction is provided by the ngx_http_geo_module module. By default, nginx loads this module unless --without-http_geo_module is configured manually.

ngx_http_geo_module module can be used to create variables whose values ​​depend on the client ip address. The usage is as follows:

geo指令
语法: geo [$address] $variable { ... }
默认值: —
配置段: http
Copy after login

Define to obtain the client's IP address from the specified variable. By default, nginx gets the client IP address from the $remote_addr variable, but it can also be obtained from other variables.

在/usr/local/nginx/conf/nginx.conf文件内加入以下配置
geo $geo {
    ranges;          #使用以地址段的形式定义地址,这个参数必须放在首位   
    default dn;
    include ip_geo.conf;
  }

    upstream wuhan.server {
      server   192.168.155.98:8081;
    }

    upstream shanghai.server {
      server   192.168.155.98:8082;
    }

    upstream shenzhen.server {
      server   192.168.155.98:8083;
    }

    upstream dn.server {
      server   192.168.155.98:8084;
    }

 server {
    listen    80;
    server_name 192.168.155.98 jiaoyu.media.cloudp.cc;
      root   html;
      index index.html index.htm;
    location ~* \.xml$ {
      root /data/video;
    }
    location / {
      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_pass http://$geo.server$request_uri;
    }
  }

  server {
    listen 8081;
    server_name 192.168.155.98;
    location / {
      rewrite ^ $scheme://192.168.155.106$request_uri? permanent;
    }
  }

  server {
    listen 8082;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://192.168.155.107$request_uri? permanent;
    }
  }

server {
    listen 8083;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://192.168.155.109$request_uri? permanent;
    }
  }

  server {
    listen 8084;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://jiaoyu.dn.cloudp.cc$request_uri? permanent;
    }
}
Copy after login

Add the ip_geo.conf file under the /usr/local/nginx/conf/ file to divide the ip area. Note that there should be no IP overlap when dividing, otherwise "overlaps" errors will appear.

vim /usr/local/nginx/conf/ip_geo.conf

192.168.128.6-192.168.128.10 wuhan;
192.168.128.11-192.168.128.15 shanghai;
192.168.128.16-192.168.128.20 shenzhen;
Copy after login

You can also segment IP in the form of 10.2.0.0/16 wuhan; so that you don’t need to use the range directive to define it in nginx.conf

The above is the detailed content of How to use Nginx_geo module to implement CDN scheduling. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template