Rules Overview
Rules are powerful tools that allow you to customize how smoxy handles traffic to your site. They let you change smoxy's behavior for specific URLs, conditions, or security scenarios without modifying your site's base configuration.
What are Rules?
Think of rules as "if-then" statements for your CDN:
IF a request matches certain criteria (a URL pattern, an IP address, a geographic location, etc.)
THEN modify smoxy's behavior (change caching, route to different servers, block access, etc.)
Rules give you fine-grained control over how smoxy processes each request, allowing you to create sophisticated routing, caching, and security policies.
The 4 Rule Types
smoxy offers four types of rules, each designed for specific use cases:
Access Rules
Security & access control
Rich conditions (IP, country, headers, etc.)
Runs first, before everything else
Rewrite Rules
URL rewriting & redirects
URL patterns
Runs second, nginx-style rewriting
Page Rules (Deprecated)
URL-specific configuration
URL patterns
First match wins, then stops
Conditional Rules
Complex logic & conditions
Rich conditions (IP, country, headers, etc.)
All matching rules apply
Quick Comparison
Access Rules vs Conditional Rules:
Both use rich condition matching (IP, country, headers, cookies, etc.)
Access Rules are for security (block, challenge, whitelist) and run first
Conditional Rules are for configuration changes (caching, routing, headers) and run later
Page Rules vs Conditional Rules:
Both can override smoxy settings
Page Rules match on URL patterns only and stop at first match
Conditional Rules use rich conditions and all matching rules apply
Rewrite Rules:
Specialized for URL rewriting (like nginx rewrite rules)
Limited to 5 rules per site
Runs second in the sequence (after Access Rules, before Page Rules)
Execution Order
Rules are evaluated in a specific sequence for every request:
Incoming Request
↓
1. Access Rules (Security Layer)
- Position 1, 2, 3... (in order)
- Block, challenge, or whitelist traffic
- All matching rules apply (unless "Stop" is enabled)
↓
2. Rewrite Rules (URL Rewriting)
- Position 1, 2, 3... (in order)
- Rewrites URL if matched
↓
3. Page Rules (URL Matching)
- Position 1, 2, 3... (in order)
- First match wins → STOPS
↓
4. Conditional Rules (Condition Matching)
- Position 1, 2, 3... (in order)
- All matching rules apply (unless "Stop" is enabled)
↓
ResponseWithin Each Rule Type
Rules within the same type are evaluated based on their position (also called priority or order):
Position 1 is evaluated first
Position 2 is evaluated second
And so on...
You can reorder rules at any time using drag-and-drop in the smoxy hub.
When to Use Which Rule Type
Use Access Rules When:
✅ You need to block or challenge suspicious traffic
✅ You want to whitelist trusted IPs (skip security checks)
✅ You need to bypass WAF for specific requests (e.g., internal tools)
✅ Security decisions need to happen before any other processing
Example: Block all requests from a specific country, except for your office IP.
Use Rewrite Rules When:
✅ You need to rewrite URLs (like nginx rewrite rules)
✅ You're doing URL normalization or redirection
✅ You need legacy URL support or clean URL structures
✅ URL transformations need to happen before other rules evaluate
Example: Rewrite /old-path to /new-path, or normalize URLs for better caching.
Use Conditional Rules When:
✅ You need different settings for different URLs
✅ You need complex conditions (IPs, countries, headers, cookies, etc.)
✅ You want multiple rules to apply to the same request
✅ You need advanced logic (AND/OR combinations)
✅ Different conditions require different configurations
Example: Serve higher quality images to users from Europe, enable basic auth for non-office IPs, and route mobile traffic differently.
Example: Disable caching for /admin/* URLs, or route /api/* to a different load balancer.
Settings: Override Any smoxy Configuration
Both Page Rules and Conditional Rules can override ANY setting from your site's configuration.
This means any configuration you can set in your site (caching, image optimization, load balancing, security, headers, etc.) can be overridden by a rule for specific requests.
Available settings include:
Routing: Choose different origins or load balancers
Caching: Control cache TTL, cache keys, cache tags
Image Optimization: AVIF, WebP, JPEG, PNG quality levels
Security: Enable/disable WAF, basic auth, custom error pages
Headers: Add, modify, or remove request/response headers
Optimization: HTML/JS/CSS minification
Advanced: Maintenance mode, debug headers, proxy timeouts, SSI/ESI
The available settings are the same for both Page Rules and Conditional Rules - the only difference is when and how the rules are matched.
Best Practices
Start with Access Rules for security: Always define your whitelist (skip/continue) rules first, then add block/challenge rules
Use Rewrite Rules early: URL rewrites happen before Page and Conditional Rules evaluate, so plan accordingly
Use Conditional Rules for complex logic: When you need multiple conditions or want multiple rules to apply
Test with debug headers: Enable debug headers to see which rules are being applied to your requests
Order matters: Review the position/order of your rules - especially important for Access and Page Rules
Last updated
Was this helpful?