实现nginx 根据 短链接 分发跳转服务器的代码

发布时间:2020-03-19编辑:脚本学堂
实现nginx 根据 短链接 分发跳转服务器的代码

实现 nginx 根据 短链接 进行分发跳转的服务器。配置代码如下。

复制代码 代码如下:

#user  nobody;

#启动 8 个 nginx 进程
worker_processes  8;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    # 用 epoll,最大连接数
    use epoll;
    worker_connections 65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    # 由于只做转发,将超时时间设为 0
    keepalive_timeout  0;

    #gzip  on;
    # 反向代理 ttserver 1 号机,这里我放在一台机器上开了三个不同端口
    upstream backend_1 {
        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;
    }
    # 反向代理 ttserver 2 号机
    upstream backend_2 {
        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;
    }
    # 反向代理 ttserver 3 号机
    upstream backend_3 {
        server 127.0.0.10:11221 weight=5 max_fails=3 fail_timeout=1s;
    }

    server {
        listen       80;
        server_name  url.cn;

        #charset koi8-r;

#access_log  logs/host.access.log  main;
#当路径包含/count的时候,则代理到ttserver后端进行请求数据。
#请注意,这里屏蔽了PUT,DELETE,POST方法,只是使用了GET,主要目的是为了安全性,
#因为DELETE,POST,PUT是可以修改数据的

location ~* /count(.*) {
   if ($request_method = PUT ) {
       return 403;
   }
   if ($request_method = DELETE ) {
       return 403;
   }
   if ($request_method = POST ) {
       return 403;
   }
   proxy_method GET;
}
        #将以 a-z 为第一个字符的 url 代理到 ttserver 1 号机
location ~* "^/([a-z]{1})([a-zA-Z0-9]{5})" {
   proxy_pass http://backend_1;
}
        #将以 A-Z 为第一个字符的 url 代理到 ttserver 2 号机
location ~* "^/([A-Z]{1})([a-zA-Z0-9]{5})" {
   proxy_pass http://backend_2;
}
        #将以 0-9 为第一个字符的 url 代理到 ttserver 3 号机
location ~* "^/([0-9]{1})([a-zA-Z0-9]{5})" {
   proxy_pass http://backend_3;
}

        #error_page  404    /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}