Unlike Apache, which uses .htaccess
files to manage directory-level configurations, Nginx centralizes its configurations in a main configuration file, typically found at /etc/nginx/nginx.conf
or within specific site configuration files in /etc/nginx/sites-available/
. Below are common .htaccess
functionalities and their equivalents in Nginx, with detailed code examples.
Nginx Configuration Basics
-
Locate the Nginx Configuration File:
- For global configurations, edit
/etc/nginx/nginx.conf
. - For individual websites, modify files in
/etc/nginx/sites-available/
and link them to/etc/nginx/sites-enabled/
.
- For global configurations, edit
-
Restart Nginx after making changes:
sudo systemctl restart nginx
Replacing .htaccess Functionalities in Nginx
1. Redirecting URLs
Nginx uses rewrite
or return
directives for URL redirection.
Example: Redirecting Old Page to New Page
location /old-page {
return 301 https://yourwebsite.com/new-page;
}
This configuration redirects /old-page
to /new-page
.
Example: Redirecting the Entire Domain
server {
listen 80;
server_name oldwebsite.com;
return 301 https://newwebsite.com$request_uri;
}
This redirects all traffic from oldwebsite.com
to newwebsite.com
, preserving the URL path and query.
2. Setting Up Custom Error Pages
Custom error pages can enhance user experience. In Nginx, specify error pages with the error_page
directive.
Example: Define Custom Error Page
server {
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
internal;
}
}
This serves 404.html
from the document root when a 404 error occurs.
3. Enforcing HTTPS
Redirect all HTTP requests to HTTPS to improve security.
Example: HTTP to HTTPS Redirect
server {
listen 80;
server_name yourwebsite.com www.yourwebsite.com;
return 301 https://$host$request_uri;
}
This redirects all HTTP traffic to HTTPS while maintaining the original URL.
4. Preventing Hotlinking
To protect your assets from being used on other sites, use Nginx to prevent hotlinking.
Example: Prevent Hotlinking
location ~ \.(gif|jpg|jpeg|png)$ {
valid_referers none blocked yourwebsite.com *.yourwebsite.com;
if ($invalid_referer) {
return 403;
}
}
This configuration only allows yourwebsite.com
to serve images, blocking requests from other domains.
5. Improving Website Speed with Compression
Enable Gzip compression to improve loading times for users.
Example: Enable Gzip Compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml+rss text/javascript;
gzip_min_length 256;
This configuration compresses specified file types, reducing page load times.
6. Restricting Access to Admin Areas
Restrict access to sensitive areas by IP to enhance security.
Example: Restrict Access by IP
location /admin {
allow 123.45.67.89; # Replace with your IP
deny all;
}
This allows only the specified IP address to access the /admin
directory.
7. Setting Up Browser Caching
Use caching to improve loading times for returning visitors.
Example: Enable Browser Caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
This configuration caches images, CSS, and JavaScript files for 30 days.
Nginx Configuration Best Practices
- Test Configurations: Before restarting Nginx, test configuration syntax with:
sudo nginx -t
- Organize Config Files: For large setups, consider separating configurations into individual files in
/etc/nginx/sites-available/
. - Backup Configurations: Back up your configurations before making major changes.
By replacing .htaccess
with Nginx configurations, you gain efficient, centralized control over server behavior and website functionality. For more advanced configurations, refer to the Nginx documentation or consult Systron Hosting Support Desk for assistance.