How can you configure Nginx to handle server-side URL rewriting? nginx

How can you configure Nginx to handle server-side URL rewriting?

Nov. 13, 2023

How to Configure Nginx for Server-Side URL Rewriting

Nginx is a popular open-source web server software known for its high performance and scalability. It can also be used as a reverse proxy server, load balancer, and HTTP cache. One of its important features is the ability to handle server-side URL rewriting, which allows users to modify or mask the URLs requested by clients.

Why Use Server-Side URL Rewriting?

URL rewriting is a useful technique in web development that allows you to change the appearance of URLs requested by clients. This can be beneficial for multiple reasons:

  • Improving SEO: Rewriting URLs to be more descriptive and user-friendly can enhance search engine optimization.
  • Enhancing security: Masking the actual file or directory structure of your web server can help protect sensitive information.
  • Providing backward compatibility: If you have migrated your website or made changes to its structure, URL rewriting can ensure that old URLs still work.
  • Creating user-friendly URLs: Rewriting dynamic URLs with query parameters into static-looking URLs makes them easier to read and share.

Configuring Nginx for URL Rewriting

To configure Nginx for server-side URL rewriting, you need to modify its configuration file (usually located at /etc/nginx/nginx.conf or /etc/nginx/sites-available/default). Here are the steps to follow:

  1. Open the Nginx configuration file using a text editor:
    sudo nano /etc/nginx/nginx.conf
  2. Locate the server block where you want to apply URL rewriting. This could be either in the main configuration file or a specific virtual host file.
  3. Inside the server block, add the following directive to enable URL rewriting:
    location / {
        rewrite ^/old-url$ /new-url permanent;
    Replace /old-url with the URL you want to rewrite and /new-url with the desired rewritten URL. The permanent flag indicates that the redirect response should use a 301 permanent redirect status.
  4. Save and close the file.
  5. Verify the Nginx configuration file for syntax errors:
    nginx -t
  6. If there are no errors, restart Nginx to apply the changes:
    sudo service nginx restart

Additional Options

Nginx offers a variety of additional options for URL rewriting, allowing you to create more complex rewrite rules. Some commonly used directives include:

  • rewrite: Performs a simple URL rewrite.
  • return: Sends a redirect response to the client.
  • if: Allows conditional rewriting based on certain conditions.
  • try_files: Checks if a file exists and, if not, passes the request to a given fallback.

It's important to note that incorrect rewrite rules can result in unintended consequences, such as redirect loops or broken URLs. Therefore, always test and verify your rewrite rules before deploying them to a production environment.


Configuring Nginx for server-side URL rewriting provides you with a powerful tool to manipulate URLs requested by clients. Whether it's improving SEO, enhancing security, providing backward compatibility, or creating user-friendly URLs, Nginx's URL rewriting capabilities offer flexibility and control over your web server configuration.

Remember to regularly review and update your rewrite rules as your website evolves, ensuring that your URLs continue to serve your website's goals effectively.