76 lines
3.5 KiB
Plaintext
76 lines
3.5 KiB
Plaintext
user nginx;
|
|
worker_processes auto;
|
|
pid /tmp/nginx.pid;
|
|
error_log /dev/stderr warn;
|
|
|
|
events {
|
|
worker_connections 4096;
|
|
}
|
|
|
|
http {
|
|
include /etc/nginx/mime.types;
|
|
default_type application/octet-stream;
|
|
server_tokens off;
|
|
charset utf-8;
|
|
proxy_connect_timeout 3s;
|
|
proxy_send_timeout 30s;
|
|
proxy_read_timeout 30s;
|
|
|
|
map $http_upgrade $connection_upgrade {
|
|
default upgrade;
|
|
'' close;
|
|
}
|
|
map $http_x_request_id $edge_request_id {
|
|
"~*^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" $http_x_request_id;
|
|
"~*^[0-9A-HJKMNP-TV-Z]{26}$" $http_x_request_id;
|
|
default $request_id;
|
|
}
|
|
map $http_traceparent $trace_id {
|
|
"~^[0-9a-f]{2}-(?<valid_trace_id>[0-9a-f]{32})-[0-9a-f]{16}-[0-9a-f]{2}$" $valid_trace_id;
|
|
default "";
|
|
}
|
|
map $request_method $polling_key {
|
|
GET $binary_remote_addr;
|
|
default "";
|
|
}
|
|
|
|
log_format json_combined escape=json
|
|
'{"timestamp":"$time_iso8601","service.name":"nginx","request_id":"$edge_request_id",'
|
|
'"trace_id":"$trace_id","remote_addr":"$remote_addr","host":"$host","method":"$request_method",'
|
|
'"uri":"$uri","status":$status,"bytes":$body_bytes_sent,"duration":$request_time,'
|
|
'"upstream_status":"$upstream_status","upstream_time":"$upstream_response_time",'
|
|
'"cache":"$upstream_cache_status","tls":"$ssl_protocol","user_agent":"$http_user_agent"}';
|
|
access_log /dev/stdout json_combined;
|
|
|
|
limit_req_status 429;
|
|
limit_conn_status 429;
|
|
limit_req_zone $binary_remote_addr zone=api:10m rate=${NGINX_RATE_LIMIT_API};
|
|
limit_req_zone $binary_remote_addr zone=auth:10m rate=${NGINX_RATE_LIMIT_AUTH};
|
|
limit_req_zone $binary_remote_addr zone=public:10m rate=${NGINX_RATE_LIMIT_PUBLIC};
|
|
limit_req_zone $polling_key zone=polling:10m rate=${NGINX_RATE_LIMIT_POLLING};
|
|
limit_req_zone $binary_remote_addr zone=downloads:10m rate=${NGINX_RATE_LIMIT_DOWNLOADS};
|
|
limit_req_zone $binary_remote_addr zone=notifications_read:10m rate=${NGINX_RATE_LIMIT_NOTIFICATIONS_READ};
|
|
limit_req_zone $binary_remote_addr zone=notifications_action:10m rate=${NGINX_RATE_LIMIT_NOTIFICATIONS_ACTION};
|
|
limit_req_zone $binary_remote_addr zone=notification_upload:10m rate=${NGINX_RATE_LIMIT_NOTIFICATION_UPLOAD};
|
|
limit_req_zone $binary_remote_addr zone=notifications_public:10m rate=${NGINX_RATE_LIMIT_NOTIFICATIONS_PUBLIC};
|
|
limit_req_zone $binary_remote_addr zone=bitrix_callbacks:10m rate=${NGINX_RATE_LIMIT_BITRIX};
|
|
limit_req_zone $binary_remote_addr zone=sms_callbacks:10m rate=${NGINX_RATE_LIMIT_SMS_CALLBACK};
|
|
limit_req_zone $binary_remote_addr zone=ws_connect:10m rate=${NGINX_RATE_LIMIT_WS};
|
|
limit_conn_zone $binary_remote_addr zone=connections:10m;
|
|
|
|
proxy_cache_path /var/cache/nginx/public levels=1:2 keys_zone=public_cache:20m
|
|
max_size=256m inactive=1h use_temp_path=off;
|
|
client_max_body_size ${NGINX_CLIENT_MAX_BODY_SIZE};
|
|
client_body_temp_path /tmp/client_body;
|
|
proxy_temp_path /tmp/proxy;
|
|
|
|
upstream api_backend { server api-backend:8000; keepalive 32; }
|
|
upstream keycloak_upstream { server keycloak:8080; keepalive 16; }
|
|
upstream sms_service_upstream { server sms-service:8080; keepalive 8; }
|
|
upstream bitrix_local { server bitrix-local-app:8080; keepalive 16; }
|
|
upstream bitrix_sync_upstream { server bitrix-sync:8080; keepalive 8; }
|
|
upstream frontend_dev { server ${EXPO_DEV_SERVER_HOSTPORT}; keepalive 8; }
|
|
|
|
include /etc/nginx/generated/site.conf;
|
|
}
|