打开 nginx.conf 配置文件: #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; } } }
|