This error can occur during installation of ERPNext as nginx: [emerg] unknown log format “main” in /etc/nginx/conf.d/frappe-bench.conf:101. This error can also occur when setting up nginx outside ERPNext. Either-way, here is a brief on the causes of the error and how to get it resolved.
The main reason for the failure was that I had explicitly commented out log_format main
.
Configuring Access Logs in Nginx Under Nginx, all client requests to the server are recorded in the access log in a specified format using the ngx_http_log_module
module.
The default log file is log/access.log (usually /var/log/nginx/access_log
on Linux systems) and the default format for logging is normally the combined or main format (this can vary from one distro to another).
The access_log directive (applicable in the HTTP, server, location, if in location and limit except for context) is used to set the log file and the log_format directive (applicable under the HTTP context only) is used to set the log format. The log format is described by common variables and variables that generated only at the time when a log is written.
The syntax for configuring a log format is:
log_format format_name 'set_of_variables_to_define_format';
Open the file etc/nginx/nginx.conf in a text editor of choice
Add the below piece of code inside http as shown in the section following the code snippet:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Sample Nginx file with changes
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/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"';
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}