Last active
January 2, 2020 04:28
-
-
Save exodus4d/c57064ac55e64b831a31 to your computer and use it in GitHub Desktop.
nginx.conf for Pathfinder (Nginx v1.11.8)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# nginx Configuration File | |
# http://wiki.nginx.org/Configuration | |
# Run as a less privileged user for security reasons. | |
user nginx nginx; | |
# How many worker threads to run; | |
# "auto" sets it to the number of CPU cores available in the system, and | |
# offers the best performance. Don't set it higher than the number of CPU | |
# cores if changing this parameter. | |
# The maximum number of connections for Nginx is calculated by: | |
# max_clients = worker_processes * worker_connections | |
# (2 Cores = 4 processes) check cores: grep processor /proc/cpuinfo | wc -l | |
#worker_processes auto; | |
worker_processes 4; | |
# Maximum open file descriptors per process; | |
# should be > worker_connections. | |
worker_rlimit_nofile 20000; | |
events { | |
# The worker_connections command tells our worker processes how many people can simultaneously be served by Nginx. | |
# When you need > 8000 * cpu_cores connections, you start optimizing your OS, | |
# and this is probably the point at which you hire people who are smarter than | |
# you, as this is *a lot* of requests. | |
# worker_connections 768; | |
worker_connections 19000; | |
multi_accept on; | |
use epoll; | |
} | |
# Default error log file | |
# (this is only used when you don't override error_log on a server{} level) | |
error_log /var/log/nginx/error.log warn; | |
pid /var/run/nginx.pid; | |
http { | |
# Hide nginx version information. | |
server_tokens on; | |
# Define the MIME types for files. | |
include /etc/nginx/mime.types; | |
default_type application/octet-stream; | |
# Update charset_types due to updated mime.types | |
charset_types text/css text/plain text/vnd.wap.wml application/javascript application/json application/rss+xml application/xml; | |
# Speed up file transfers by using sendfile() to copy directly | |
# between descriptors rather than using read()/write(). | |
# For performance reasons, on FreeBSD systems w/ ZFS | |
# this option should be disabled as ZFS's ARC caches | |
# frequently used files in RAM by default. | |
sendfile on; | |
# Tell Nginx not to send out partial frames; this increases throughput | |
# since TCP frames are filled up before being sent out. (adds TCP_CORK) | |
tcp_nopush off; | |
# Send packages immediately (on). Otherwise nginx will "wait" 200ms for additional data to fullfill a package. | |
tcp_nodelay on; | |
# Timeouts ================================================================================================================== | |
# 'Body' and 'Header' max response timings. If neither a body or header is sent, the server will issue a 408 error or Request time out. (Default: 60s) | |
client_body_timeout 12; | |
client_header_timeout 12; | |
# Assigns the timeout for keep-alive connections with the client. | |
# Simply put, Nginx will close connections with the client after this period of time.(Default: 65) | |
keepalive_timeout 20s; | |
# Finally, the send_timeout is established not on the entire transfer of answer, but only between two operations of reading; | |
# if after this time client will take nothing, then Nginx is shutting down the connection. | |
send_timeout 10s; | |
# Sets a timeout for name resolution. (Default: 30s) | |
resolver_timeout 5s; | |
# Timeout period for connection with FastCGI-server. It should be noted that this value can't exceed 75 seconds. (Default: 60s) | |
fastcgi_connect_timeout 5s; | |
# Amount of time for upstream to wait for a fastcgi process to send data. | |
# Change this directive if you have long running fastcgi processes that do not produce output until they have finished processing. | |
# If you are seeing an upstream timed out error in the error log, then increase this parameter to something more appropriate. (Default: 60s) | |
fastcgi_read_timeout 40s; | |
# Request timeout to the server. The timeout is calculated between two write operations, not for the whole request. | |
# If no data have been written during this period then serve closes the connection. (Default: 60s) | |
fastcgi_send_timeout 15s; | |
# WebSockets =============================================================================================================== | |
map $http_upgrade $connection_upgrade { | |
default upgrade; | |
'' close; | |
} | |
upstream ws_dev_map_update { | |
server 127.0.0.1:8020; | |
} | |
upstream ws_prod_map_update { | |
server 127.0.0.1:8030; | |
} | |
# Buffer ==================================================================================================================== | |
# Similar to the previous directive, only instead it handles the client header size. | |
# For all intents and purposes, 1K is usually a decent size for this directive. | |
client_header_buffer_size 1k; | |
# The maximum number and size of buffers for large client headers. | |
large_client_header_buffers 4 4k; | |
# The maximum allowed size for a client request. If the maximum size is exceeded, then Nginx will spit out a 413 error or Request Entity Too Large. (Default: 1m) | |
# php max upload limit cannot be larger than this | |
client_max_body_size 8m; | |
# This handles the client buffer size, meaning any POST actions sent to Nginx. POST actions are typically form submissions. | |
client_body_buffer_size 32k; | |
output_buffers 2 32k; | |
fastcgi_buffering on; | |
fastcgi_buffers 8 32k; | |
fastcgi_buffer_size 32k; | |
# Caching ================================================================================================================== | |
# Above sample tells nginx to cache a file information as long as minimum 2 requests are made during 5m window. | |
open_file_cache max=10000 inactive=5m; | |
open_file_cache_valid 2m; | |
open_file_cache_min_uses 1; | |
open_file_cache_errors on; | |
# Fast CGI | |
# fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m; | |
# fastcgi_cache_key "$scheme$request_method$host$request_uri"; | |
# Logging =================================================================================================================== | |
# Format to use in log files | |
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | |
'$status $body_bytes_sent "$http_referer" ' | |
'"$http_user_agent" "$http_x_forwarded_for"'; | |
# Extended Logging (e.g. for Nginx Aplify log graphs) | |
log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" ' | |
'$status $body_bytes_sent "$http_referer" ' | |
'"$http_user_agent" "$http_x_forwarded_for" ' | |
'"$host" sn="$server_name" ' | |
'rt=$request_time ' | |
'ua="$upstream_addr" us="$upstream_status" ' | |
'ut="$upstream_response_time" ul="$upstream_response_length" ' | |
'cs=$upstream_cache_status' ; | |
# This excludes 2xx and 3xx status codes from beeing loged | |
map $status $loggable { | |
~^[23] 0; | |
default 1; | |
} | |
# logs just 5xxx errors | |
map $status $log_production { | |
~^[1234] 0; | |
default 1; | |
} | |
# Default log file | |
# (this is only used when you don't override access_log on a server{} level) | |
access_log /var/log/nginx/access.log main if=$loggable; | |
# Compression =============================================================================================================== | |
# Enable Gzip compressed. | |
gzip on; | |
# Compression level (1-9). | |
# 5 is a perfect compromise between size and cpu usage, offering about | |
# 75% reduction for most ascii files (almost identical to level 9). | |
gzip_comp_level 5; | |
# Don't compress anything that's already small and unlikely to shrink much | |
# if at all (the default is 20 bytes, which is bad as that usually leads to | |
# larger files after gzipping). | |
gzip_min_length 256; | |
# Compress data even for clients that are connecting to us via proxies, | |
# identified by the "Via" header (required for CloudFront). | |
# gzip_proxied expired no-cache no-store private auth; | |
gzip_proxied any; | |
# Tell proxies to cache both the gzipped and regular version of a resource | |
# whenever the client's Accept-Encoding capabilities header varies; | |
# Avoids the issue where a non-gzip capable client (which is extremely rare | |
# today) would display gibberish if their proxy gave them the gzipped version. | |
gzip_vary on; | |
# Compress all output labeled with one of the following MIME-types. | |
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-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/plain | |
text/vcard | |
text/vnd.rim.location.xloc | |
text/vtt | |
text/x-component | |
text/x-cross-domain-policy; | |
# text/html; | |
# This should be turned on if you are going to have pre-compressed copies (.gz) of | |
# static files available. If not it should be left off as it will cause extra I/O | |
# for the check. It is best if you enable this in a location{} block for | |
# a specific directory, or on an individual server{} level. | |
gzip_static off; | |
# Include files in the sites-enabled folder. server{} configuration files should be | |
# placed in the sites-available folder, and then the configuration should be enabled | |
# by creating a symlink to it in the sites-enabled folder. | |
# See doc/sites-enabled.md for more info. | |
# include /etc/nginx/conf.d/*.conf; | |
include /etc/nginx/sites_enabled/*.conf; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment