Performance Glossary
Nginx, and Why Your Rewrite Rules Went Quiet
You put a site behind nginx, the .htaccess rules stopped applying, and you need the equivalent configuration rather than a workaround for it.
The short answer
Nginx is the event-driven web server that handles thousands of simultaneous connections inside a small number of worker processes, because a worker never sits blocked on one slow client — it moves to the next ready socket instead.
The other half of the answer is the one people arrive here for: nginx does not read .htaccess and never will. The same behaviour goes into central configuration as location and rewrite blocks, applied when the service reloads.
By the HostingFast team · Reviewed 12 August 2026
100+
Terms, measured not asserted
2 min
To read one entry
Plain
Configuration you can copy
24/7
Engineers on shift
The architecture absorbs connection floods that a process-per-request model finds expensive, which is why it so often sits at the front of a busy stack, terminating TLS and passing work back to PHP-FPM or an application server behind it.
Central configuration is a trade. You gain speed and predictability and lose the per-customer, per-directory flexibility that shared hosting is built on. That single trade-off explains most of the differences between the two servers and most of the arguments about them.
Why the rules stopped applying
There is no silent failure to debug: nginx never looks for the file. Your redirects, your deny rules and your header directives are simply not being read, which is why the site behaves as though the file were empty rather than throwing an error.
Every common .htaccess recipe has a published nginx equivalent — try_files for the WordPress front controller, a location block for static asset expiry, a return 301 for each redirect. Translate them once into the server block, reload, and the behaviour comes back.
Where the concurrency actually comes from
worker_processes times worker_connections is the theoretical ceiling, and on a machine where each connection costs kilobytes rather than megabytes that number gets very large. The real limit is usually the file descriptor cap or the application behind the proxy, not nginx itself.
This is also why nginx is such a good place to terminate TLS and serve static files. The expensive, slow parts of a page — the ones where a client dawdles — are handled by a process that does not care how long the client takes, leaving your PHP workers for work that needs them.
Proxying, and the headers people forget
A reverse proxy in front of an application is the canonical deployment: nginx handles certificates, compression and static files, then passes what is left to a port the app is listening on. What breaks first is almost always the forwarded headers, because the app now sees the proxy's address instead of the visitor's.
Set X-Forwarded-For and X-Forwarded-Proto and make the application trust them, or you will spend an afternoon wondering why every user appears to be at 127.0.0.1 and why the framework keeps redirecting an https request back to http.
Checking the config before you reload
nginx -t parses the configuration and reports the file and line of any error without touching the running service. Make it reflex: edit, test, reload. A reload with a broken config leaves the old workers serving, but a restart does not, and that distinction has ended a few evenings badly.
After the reload, curl -I the URLs whose behaviour you changed and read the status and headers. The config file says what you intended; the response says what the server is doing.

Two servers, one honest comparison
Where two tools solve the same problem differently, these entries say what each optimises for and which reading tells you which one you are limited by.
On our own platform LiteSpeed handles the serving, so .htaccess keeps working while cached pages are returned without starting PHP at all.
- The translation, directive by directive
- Where the real ceiling sits
- Proxy headers spelled out
- Test before reload, always
Why HostingFast
Standard on every plan
Design choices named as choices
Where a tool omits something on purpose, the entry says so instead of treating it as a missing feature.
Recipes translated, not replaced
The nginx equivalents for the .htaccess blocks you already rely on, with the front controller included.
The real limit identified
Worker maths, descriptor caps and the application behind the proxy, in the order they actually bind.
Proxy pitfalls up front
The forwarded headers that break client IP logging and https detection, before they cost you an evening.
A safe reload procedure
Test the configuration, reload rather than restart, then verify with the response instead of the file.
Honest about what we run
The entry says which server our platform uses and why, so you can weigh the advice against it.
Quick Start
From order to online
- 1
List every rule you are losing
Read the .htaccess you are leaving behind and write down each directive's intent. Intent translates cleanly; syntax does not.
- 2
Write the server block and test it
Add try_files, the static expiry location and each redirect, then run nginx -t and fix what it names before going near a reload.
- 3
Verify with responses, not files
curl -I every URL whose behaviour you changed. Status codes and headers are the only evidence that the block matched.
Built In
Loaded onto every plan
- LiteSpeed compiled into the server, not a caching plugin bolted on afterwards
- NVMe on every tier — the entry plan runs the same drives as the top one
- SSH, Git and Composer on the developer-focused plans
- PHP version selectable per site, switched from the control panel in seconds
- DDoS filtering absorbed at the network edge, before it reaches your workers
- Staging you can clone, break and throw away before anything reaches live
- Daily backups with a self-service restore you run yourself from the panel
- Renewal billed at your signup rate — no year-two step change
- Zero setup fees, on any plan, ever
- A human on support at any hour, including for the awkward questions
Frequently Asked
What people ask us most often
Can I make nginx read .htaccess if I really need to?
No, and no module adds it. The design decision is deliberate: reading a file in every directory on every request is exactly the per-request work nginx exists to avoid. Convert the rules into the server block once and they are parsed at reload rather than on every hit.
Is nginx worth running on my own VPS?
For heavy concurrency or reverse proxy duty it is excellent, and it will hold connections a process-per-request server cannot afford. For following published tutorials without friction, Apache's ecosystem is kinder. Pick the one whose documentation you can still parse at eleven at night.
What is the refund window if this turns out to be the wrong fit?
Thirty days on shared, business, WordPress and WooCommerce hosting; seven on reseller. VPS and dedicated servers are built to order the moment payment clears, so they sit outside the guarantee, as do domain registrations, where the registry charges the instant the name is secured.
Does the price move at renewal?
No. You renew at the rate you ordered at, every term, because there is no introductory teaser price to fall off. Every invoice sits in your client area and auto-renewal is a toggle in the account rather than a phone call to somebody's retention desk.
Keep reading
LiteSpeed
The Apache-compatible server with the cache built in, and how to confirm it is hitting.
CDN (Content Delivery Network)
Edge servers that shorten the distance, and the assets worth putting on them.
How to Test Your Website Speed
Which tool answers which question, and how to take a baseline you can defend.
WordPress Hosting
WordPress with LiteSpeed caching, staging and updates handled for you.
Web Hosting
cPanel hosting on NVMe with LiteSpeed, free SSL and a migration included.
Changing hosts? Run through our checklist first.
A straightforward sequence for a switch your visitors never feel: which files move first, how to shift email across without losing a single message, the right moment to repoint DNS, and the two mistakes behind almost all the downtime we get asked to rescue.
Serve the static half without waking PHP.
LiteSpeed caching, NVMe on every tier and DDoS filtering absorbed at the edge, with no setup fee attached.
View WordPress Hosting plans