1- # Override log format to include request latency
1+ # Log format to include request latency
22log_format custom_main '$remote_addr - $remote_user [$time_local] "$request" '
33 '$status $body_bytes_sent "$http_referer" '
44 '"$http_user_agent" "$http_x_forwarded_for" '
55 'rt=$request_time';
66
7+ # Map X-Forwarded-Proto or fallback to $scheme
8+ map $http_x_forwarded_proto $forwarded_proto {
9+ default $http_x_forwarded_proto;
10+ "" $scheme;
11+ }
12+
13+ # Map X-Forwarded-Host or fallback to $host
14+ map $http_x_forwarded_host $forwarded_host {
15+ default $http_x_forwarded_host;
16+ "" $host;
17+ }
18+
19+ # Map X-Forwarded-Port or fallback to server port
20+ map $http_x_forwarded_port $forwarded_port {
21+ default $http_x_forwarded_port;
22+ "" $server_port;
23+ }
24+
725upstream api_server {
826 # fail_timeout=0 means we always retry an upstream even if it failed
927 # to return a good HTTP response
@@ -12,22 +30,26 @@ upstream api_server {
1230 #server unix:/tmp/gunicorn.sock fail_timeout=0;
1331
1432 # for a TCP configuration
15- # TODO: use gunicorn to manage multiple processes
16- server ${W9_ID}-api-server:8080 fail_timeout=0;
33+ server ${ONYX_BACKEND_API_HOST}:8080 fail_timeout=0;
1734}
1835
1936upstream web_server {
20- server ${W9_ID}-web-server :3000 fail_timeout=0;
37+ server ${ONYX_WEB_SERVER_HOST} :3000 fail_timeout=0;
2138}
2239
40+ # Conditionally include MCP upstream configuration
41+ include /etc/nginx/conf.d/mcp_upstream.conf.inc;
42+
2343server {
24- listen 80;
25- server_name ${DOMAIN};
44+ listen 80 default_server;
2645
2746 client_max_body_size 5G; # Maximum upload size
2847
2948 access_log /var/log/nginx/access.log custom_main;
3049
50+ # Conditionally include MCP location configuration
51+ include /etc/nginx/conf.d/mcp.conf.inc;
52+
3153 # Match both /api/* and /openapi.json in a single rule
3254 location ~ ^/(api|openapi.json)(/.*)?$ {
3355 # Rewrite /api prefixed matched paths
@@ -36,14 +58,20 @@ server {
3658 # misc headers
3759 proxy_set_header X-Real-IP $remote_addr;
3860 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
39- proxy_set_header X-Forwarded-Proto $scheme;
40- proxy_set_header X-Forwarded-Host $host;
61+ proxy_set_header X-Forwarded-Proto $forwarded_proto;
62+ proxy_set_header X-Forwarded-Host $forwarded_host;
63+ proxy_set_header X-Forwarded-Port $forwarded_port;
4164 proxy_set_header Host $host;
4265
4366 # need to use 1.1 to support chunked transfers
4467 proxy_http_version 1.1;
4568 proxy_buffering off;
4669
70+ # timeout settings
71+ proxy_connect_timeout ${NGINX_PROXY_CONNECT_TIMEOUT}s;
72+ proxy_send_timeout ${NGINX_PROXY_SEND_TIMEOUT}s;
73+ proxy_read_timeout ${NGINX_PROXY_READ_TIMEOUT}s;
74+
4775 # we don't want nginx trying to do something clever with
4876 # redirects, we set the Host: header above already.
4977 proxy_redirect off;
@@ -54,12 +82,18 @@ server {
5482 # misc headers
5583 proxy_set_header X-Real-IP $remote_addr;
5684 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
57- proxy_set_header X-Forwarded-Proto $scheme;
58- proxy_set_header X-Forwarded-Host $host;
85+ proxy_set_header X-Forwarded-Proto $forwarded_proto;
86+ proxy_set_header X-Forwarded-Host $forwarded_host;
87+ proxy_set_header X-Forwarded-Port $forwarded_port;
5988 proxy_set_header Host $host;
6089
6190 proxy_http_version 1.1;
6291
92+ # timeout settings
93+ proxy_connect_timeout ${NGINX_PROXY_CONNECT_TIMEOUT}s;
94+ proxy_send_timeout ${NGINX_PROXY_SEND_TIMEOUT}s;
95+ proxy_read_timeout ${NGINX_PROXY_READ_TIMEOUT}s;
96+
6397 # we don't want nginx trying to do something clever with
6498 # redirects, we set the Host: header above already.
6599 proxy_redirect off;
0 commit comments