### Rozhuk Ivan 2012 - 2015 ### nginx configuration file ### for torrent retracker proxy user www www; daemon on; worker_processes 2; worker_priority 0; pid /var/run/nginx.pid; master_process on; timer_resolution 100ms; pcre_jit on; events { worker_connections 65535; # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; #use kqueue; accept_mutex on; accept_mutex_delay 100ms; multi_accept on; } http { include mime.types; uninitialized_variable_warn on; upstream torent_retracker_proxy { server 172.16.0.3:8080 max_fails=8 fail_timeout=30s; } server { listen 0.0.0.0:57777 rcvbuf=4k sndbuf=8k accept_filter=httpready; tcp_nopush on; tcp_nodelay on; send_lowat 0; keepalive_timeout 65 60; send_timeout 3600; reset_timedout_connection on; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Connection close; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_buffering on; proxy_buffers 4 4k; #proxy_buffer_size 4k; proxy_max_temp_file_size 0; proxy_store off; proxy_cache off; proxy_connect_timeout 30s; proxy_send_timeout 60s; proxy_read_timeout 120s; proxy_redirect off; proxy_ignore_headers X-Accel-Buffering X-Accel-Limit-Rate X-Accel-Redirect; access_log off; # Error handling proxy_ignore_client_abort off; proxy_next_upstream error timeout; proxy_intercept_errors on; recursive_error_pages on; error_page 502 = @proxy_req; error_page 504 = @proxy_req; error_page 599 = @proxy_req; location / { if ($arg_info_hash = "") { return 599; } if ($args ~* ^(.*)&ip=[^&]+(.*)$) { set $args $1$2; } rewrite ^(.*)$ $1?$args&ip=$remote_addr? break; proxy_pass http://torent_retracker_proxy; } location @proxy_req { internal; proxy_pass http://$http_host; } } }