Skip to content

Reverse Proxy

Caddy handles TLS automatically:

api.example.com {
reverse_proxy localhost:8080
}

With file uploads:

api.example.com {
root * /var/lib/rcommerce/uploads
file_server /uploads/*
reverse_proxy /* localhost:8080
}
server {
listen 443 ssl;
server_name api.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8080;
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;
}
}
http:
routers:
rcommerce:
rule: "Host(`api.example.com`)"
service: rcommerce
tls:
certResolver: letsencrypt
services:
rcommerce:
loadBalancer:
servers:
- url: "http://localhost:8080"

For WebSocket support, ensure your proxy passes the Upgrade and Connection headers:

location /api/v1/ws {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

Configure CORS in rCommerce config:

[server.cors]
enabled = true
allowed_origins = ["https://your-store.com"]
allowed_methods = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]
allowed_headers = ["Content-Type", "Authorization"]