Files
2019-05-07 21:06:38 +02:00

176 lines
7.1 KiB
Nginx Configuration File

# Problems? => https://github.com/theraw/The-World-Is-Yours/issues
user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
# ====================================================================
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
# ====================================================================
# ====================================================================
# LOAD DYNAMIC MODS
# ====================================================================
load_module /nginx/modules/ndk_http_module.so;
load_module /nginx/modules/ngx_http_set_misc_module.so;
load_module /nginx/modules/ngx_http_geoip2_module.so;
load_module /nginx/modules/ngx_stream_geoip2_module.so;
load_module /nginx/modules/ngx_http_testcookie_access_module.so;
load_module /nginx/modules/ngx_http_cookie_flag_filter_module.so;
# load_module /nginx/modules/ngx_http_headers_more_filter_module.so
# load_module /nginx/modules/ngx_http_encrypted_session_module.so
# load_module /nginx/modules/ngx_http_brotli_filter_module.so
# load_module /nginx/modules/ngx_http_brotli_static_module.so
# This module is nginx rtmp module but a better one, has same features rtmp/vod/hls/dash etc.
# load_module /nginx/modules/ngx_http_flv_live_module.so
# Every module works but modSecurity doesn't work because you have to compile mod security library
#
# load_module /nginx/modules/ngx_http_modsecurity_module.so;
# ====================================================================
events {
worker_connections 65535;
multi_accept on;
use epoll;
}
http {
# ////////////////////////////////////////////////////// #
# ==================== GEOIP =========================== #
geoip2 /nginx/db/GeoLite2-Country.mmdb {
$geoip2_data_country_code default=US source=$remote_addr country iso_code;
$geoip2_data_country_name country names en;
}
geoip2 /nginx/db/GeoLite2-City.mmdb {
$geoip2_data_city_name default=NA city names en;
$geoip2_data_zip default=NA postal code;
$geoip2_data_state default=NA subdivisions 0 names en;
}
# ================== END GEOIP ========================= #
# ////////////////////////////////////////////////////// #
# ////////////////////////////////////////////////////// #
include /nginx/mime.types;
# ////////////////////////////////////////////////////// #
# ////////////////////////////////////////////////////// #
# ===================== LOGS =========================== #
log_format main '$remote_addr status: $status |==| $request |==| $time_local';
# -------------------------------------------------------#
log_format agent '$time_local - client: $remote_addr $status |==| $request |==| $http_user_agent';
# -------------------------------------------------------#
log_format full '$remote_addr |==| $remote_user |==| $time_local |==| $request |==| $status |==| $body_bytes_sent |==| $http_referer |==| $http_user_agent |==| $http_x_forwarded_for |==| $http_origin';
# -------------------------------------------------------#
log_format json escape=json '[{'
'"body_bytes_sent":"$body_bytes_sent",'
'"bytes_sent":"$bytes_sent",'
'"http_host":"$http_host",'
'"msec":"$msec",'
'"time_local":"$time_local",'
'"connection":"$connection",'
'"connection_requests":"$connection_requests",'
'"remote_addr":"$remote_addr",'
'"request_length":"$request_length",'
'"request_method":"$request_method",'
'"request_uri":"$request_uri",'
'"http_user_agent":"$http_user_agent",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"country_code":"$geoip2_data_country_code",'
'"server_port":"$server_port",'
'"server_protocol":"$server_protocol",'
'"ssl_protocol":"$ssl_protocol",'
'"status":"$status",'
'"upstream_response_time":"$upstream_response_time",'
'"upstream_addr":"$upstream_addr",'
'"upstream_connect_time":"$upstream_connect_time"'
'}]';
# =================== END LOGS========================== #
# ////////////////////////////////////////////////////// #
default_type application/octet-stream;
sendfile on;
server_names_hash_bucket_size 6969;
server_names_hash_max_size 6969;
resolver 8.8.8.8;
client_body_buffer_size 128k;
client_header_buffer_size 5M;
client_max_body_size 128M;
client_body_timeout 30s;
client_header_timeout 30s;
keepalive_timeout 30s;
open_file_cache max=200000 inactive=20s;
open_file_cache_errors on;
open_file_cache_min_uses 2;
open_file_cache_valid 30s;
reset_timedout_connection on;
send_timeout 30s;
port_in_redirect off;
server_name_in_redirect off;
server_tokens off;
tcp_nodelay on;
tcp_nopush on;
types_hash_max_size 2048;
# CloudFlare IPs
# List: https://www.cloudflare.com/ips-v4
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
## Gzip Settings ##
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 5;
gzip_disable "msie6";
gzip_min_length 256;
gzip_proxied any;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-javascript
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/javascript
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy
text/x-js
text/xml;
gzip_vary on;
include /nginx/live/*;
include /nginx/conf.d/*.conf;
# ////////////////////////////////////////////////////// #
}