nginx subpath to redirect to wordpress docker container nginx subpath to redirect to wordpress docker container wordpress wordpress

nginx subpath to redirect to wordpress docker container


According to a self-answered SO question https://stackoverflow.com/a/41479776/1264360

// add these lines to wp-config.phpdefine('WP_SITE_URL', 'http://example.com/blog');define('WP_HOME', 'http://example.com/blog');$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];


Suppose you want to have your wordpress website accessible via wp subdirectory. For example:

http://your-website.com/wp

Here is how I managed to get this working without altering wp-config.php. The key is to use working_dir directive.

docker-compose.yml

version: '3'services: nginx:   image: nginx:1.17   container_name: nginx   restart: unless-stopped   depends_on:     - wordpress   ports:     - '80:80'   networks:     - app-network   volumes:     - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro db:   image: mysql:5.7   container_name: db   volumes:     - db_data:/var/lib/mysql   restart: always   environment:     MYSQL_ROOT_PASSWORD: somewordpress     MYSQL_DATABASE: wordpress     MYSQL_USER: wordpress     MYSQL_PASSWORD: wordpress   networks:     - app-network wordpress:   container_name: wordpress   depends_on:     - db   image: wordpress:latest   restart: always   environment:     WORDPRESS_DB_HOST: db:3306     WORDPRESS_DB_USER: wordpress     WORDPRESS_DB_PASSWORD: wordpress     WORDPRESS_DB_NAME: wordpress   working_dir: /var/www/html/wp   volumes:    - wordpress:/var/www/html/wp   networks:     - app-networknetworks: app-network:   driver: bridgevolumes: db_data: wordpress:

nginx.conf

events {}http {    server {        listen 80;        location /wp/ {            proxy_set_header  Host               $host;            proxy_set_header  X-Real-IP          $remote_addr;            proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;            proxy_pass http://wordpress;        }     }}