# DOC: http://blog.martinfjordvald.com/2010/07/nginx-primer/ events { multi_accept on; use epoll; worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format piwik '{"ip": "$remote_addr",' '"host": "$host",' '"path": "$request_uri",' '"status": "$status",' '"referrer": "$http_referer",' '"user_agent": "$http_user_agent",' '"length": $bytes_sent,' '"generation_time_milli": $request_time,' '"date": "$time_iso8601"}'; access_log /var/log/nginx/access.log main buffer=32k; client_body_buffer_size 4K; # NOTE: % getconf PAGESIZE # 4096 client_body_temp_path /run/shm/cache/nginx/client_body 1 2; client_body_timeout 60; client_header_buffer_size 1k; client_header_timeout 60; client_max_body_size 20m; default_type application/octet-stream; error_log /var/log/nginx/error.log warn; error_page 403 = 404; fastcgi_cache_key "$request_method $scheme://$http_host$request_uri"; fastcgi_cache_path /run/shm/cache/nginx/fastcgi inactive=10m keys_zone=microcache:2M levels=1:2 loader_files=100000 loader_sleep=1 loader_threshold=2592000000 max_size=64M; fastcgi_temp_path /run/shm/tmp/nginx/ 1 2; gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_disable "MSIE [1-6]\."; gzip_http_version 1.1; gzip_min_length 1024; gzip_proxied any; gzip_static on; gzip_vary on; gzip_types application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-javascript application/xml application/xml+rss font/opentype font/truetype image/svg+xml text/css text/javascript text/plain text/x-component text/xml; include /etc/nginx/mime.types; keepalive_timeout 20; large_client_header_buffers 4 8k; map_hash_bucket_size 128; open_file_cache max=200000 inactive=20s; open_file_cache_errors on; open_file_cache_min_uses 2; open_file_cache_valid 30s; open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m; proxy_cache_use_stale updating; proxy_temp_path /run/shm/cache/nginx/proxy_temp 1 2; reset_timedout_connection on; send_timeout 60; # NOTE: if the client stops reading data, free up the stale client connection after this much time. sendfile on; server_names_hash_bucket_size 128; server_tokens off; ssl_session_cache shared:SSL:10m; tcp_nodelay on; # NOTE: don't buffer data-sends (disable Nagle algorithm). # Good for sending frequent small bursts of data in real time. tcp_nopush on; # NOTE: causes nginx to attempt to send its HTTP response head in one packet, # instead of using partial frames. # This is useful for prepending headers before calling sendfile, # or for throughput optimization. types_hash_max_size 2048; map $http_user_agent $bad_bot { # NOTE: user agents that are to be blocked. default 0; libwww-perl 1; ~(?i)(httrack|htmlparser|libwww) 1; } #map $http_referer $bad_referer { # # NOTE: referrers that are to be blocked. # default 0; # ~(?i)(babes|casino|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|replica|sex|teen|webcam|zippo) 1; # } geo $not_local { default 1; 127.0.0.1 0; } include /etc/nginx/site.d/*/http.conf; include /etc/nginx/*/*/server.conf; include /etc/nginx/*/*/*/server.conf; server { listen 80 default_server; server_name _; return 302 $scheme://heureux-cyclage.org$request_uri; } server { listen 443 default_server; server_name _; include /etc/nginx/conf.d/ssl.conf; ssl_certificate /etc/nginx/org/heureux-cyclage/crt.pem; ssl_certificate_key /etc/nginx/org/heureux-cyclage/key.pem; return 302 $scheme://heureux-cyclage.org$request_uri; } } pid /run/nginx.pid; user www-data; worker_processes 2; # vim: ft=sh