nginx конфигурация для обслуживания содержимого c на каждом дочернем сайте WordPress для нескольких доменов - PullRequest
0 голосов
/ 29 февраля 2020

Мультисайт Wordpress (поддомен) выглядит следующим образом:

  • root домен: xxxx.com
  • дочерний сайт 1: a.xxxx.com
  • дочерний сайт 2: b.xxxx.com
  • дочерний сайт 3: c .xxxx.com

Я хочу добавить подкаталог (обслуживающий контент stati c) для каждого дочернего сайта , это выглядит так:

  • xxxx.com / z /
  • a.xxxx.com / z /
  • b.xxxx.com / z /
  • c .xxxx.com / z /

stati c cotent в xxxx.com/z/ по умолчанию работают правильно, мне нужно только создать папку с именем / z / и добавьте туда контент, но как я могу сделать так, чтобы другие / z / под другим дочерним сайтом также корректно обслуживали контент? это возможно? (содержимое stati c отличается для каждого дочернего сайта, хотя все они называются / z /

частью существующего файла конфигурации nginx:

    server {
    access_log   /var/log/nginx/access.log;
    error_log    /var/log/nginx/error.log;
    root /var/www/htdocs;
       server_name xxxx.com *.xxxx.com;

    index index.php index.html index.htm;

    # Redis NGINX CONFIGURATION
    set $skip 0;
    # POST requests and URL with a query string should always go to php
    if ($request_method = POST) {
            set $skip 1;
    }
    if ($query_string != "") {
            set $skip 1;
    } 

1 Ответ

0 голосов
/ 29 февраля 2020

Этого невозможно достичь, используя только одно определение сервера, поскольку содержимое ресурсов отличается, а папки в /var/www/htdocs также будут другими. Вы можете использовать следующие серверы с оператором перезаписи для достижения своей цели (вам также необходимо создать папки a, b, c)

server {
    access_log   /var/log/nginx/access.log;
    error_log    /var/log/nginx/error.log;
    root /var/www/htdocs;
    server_name a.xxxx.com;

    rewrite ^/z/(.*)$ /a/$1 last;
}

server {
    access_log   /var/log/nginx/access.log;
    error_log    /var/log/nginx/error.log;
    root /var/www/htdocs;
    server_name b.xxxx.com;

    rewrite ^/z/(.*)$ /b/$1 last;
}

server {
    access_log   /var/log/nginx/access.log;
    error_log    /var/log/nginx/error.log;
    root /var/www/htdocs;
    server_name c.xxxx.com;

    rewrite ^/z/(.*)$ /c/$1 last;
}

, если вы хотите сделать это только с одним сервером, вам нужно изменить оператор rewrite, чтобы он зависел от домена запроса. как то так

server {
    access_log   /var/log/nginx/access.log;
    error_log    /var/log/nginx/error.log;
    root /var/www/htdocs;
    server_name *.xxxx.com xxxx.com;

    rewrite ^/z/(.*)$ /$host/$1 last;
}
...