Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Nginx Reverse Proxy for WordPress with Apache


Nginx Reverse Proxy for WordPress with Apache


Nginx and Apache are two popular web servers that can be used together to create a powerful and efficient web hosting setup. In this article, we will explore how to set up Nginx as a reverse proxy for WordPress with Apache. This setup allows you to take advantage of the strengths of both servers, providing a fast and secure environment for your WordPress site.

Setting Up Nginx as a Reverse Proxy

To set up Nginx as a reverse proxy for WordPress with Apache, you will need to follow these steps:

1. Install Nginx: Install Nginx on your server. This can be done using the package manager for your Linux distribution, such as `apt-get` or `yum`.

2. Configure Nginx: Configure Nginx to act as a reverse proxy for your WordPress site. This involves setting up the `server` block and specifying the `proxy_pass` directive to forward requests to the Apache server.

3. Configure Apache: Configure Apache to serve your WordPress site. This involves setting up the `VirtualHost` block and specifying the `DocumentRoot` and other settings as needed.

4. Configure WordPress: Configure WordPress to work behind the reverse proxy. This involves setting the `WP_HOME` and `WP_SITEURL` constants in the `wp-config.php` file to the correct URLs.

Configuring Nginx

Here is an example of how to configure Nginx as a reverse proxy for WordPress with Apache:

nginx
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass https://127.0.0.1;
        proxy_buffering on;
        proxy_buffers 12 12k;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}

In this example, the `server` block listens on port 80 and serves the WordPress site at `example.com`. The `location` block specifies the proxy pass directive to forward requests to the Apache server at `127.0.0.1`.

Configuring Apache

Here is an example of how to configure Apache to serve your WordPress site:

apache
<VirtualHost *>
    ServerName example.com
    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

In this example, the `VirtualHost` block specifies the server name and document root for the WordPress site.

Configuring WordPress

Here is an example of how to configure WordPress to work behind the reverse proxy:

php
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

In this example, the `WP_HOME` and `WP_SITEURL` constants are set to the correct URLs for the WordPress site.

Testing the Setup

To test the setup, you can use tools like `curl` or `wget` to test the proxy. You can also use the `phpinfo()` function to check the PHP variables loaded when you visit your proxied site.

Conclusion

Setting up Nginx as a reverse proxy for WordPress with Apache provides a fast and secure environment for your WordPress site. By following these steps, you can take advantage of the strengths of both servers and create a powerful and efficient web hosting setup.

Citations:
[1] https://developer.wordpress.org/advanced-administration/server/web-server/nginx/
[2] https://gist.github.com/chrisjhoughton/8646918
[3] https://wordpress.org/support/topic/apache-with-nginx-as-reverse-proxy/
[4] https://www.reddit.com/r/nginx/comments/qcfa82/reverse_proxy_to_wordpress/
[5] https://kinsta.com/blog/reverse-proxy/