nginx.conf•1.55 kB
server {
listen 80;
server_name mcp.lachlanbridges.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mcp.lachlanbridges.com;
include /etc/nginx/snippets/ssl-lachlanbridges.com.conf;
access_log /opt/mcp/logs/mcp.access.log;
error_log /opt/mcp/logs/mcp.error.log;
# PDFs (cache OK)
location /compiled/ {
alias /opt/mcp/latex/compiled/;
autoindex off;
add_header Cache-Control "public, max-age=31536000, immutable";
types { application/pdf pdf; }
}
# Logs (no cache)
location /latex/logs/ {
alias /opt/mcp/plugins/latex/logs/;
default_type text/plain;
add_header Cache-Control "no-store";
}
# MCP Server (catch-all, must be last)
location / {
proxy_pass http://127.0.0.1:8083/mcp/;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_cache off;
proxy_read_timeout 24h; proxy_send_timeout 24h;
add_header Cache-Control "no-store";
add_header Access-Control-Allow-Origin *;
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Methods 'POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type, Authorization';
add_header Content-Length 0;
add_header Content-Type text/plain;
return 204;
}
}
}