subdirectorio nginx como raíz junto con otras carpetas

subdirectorio nginx como raíz junto con otras carpetas

La raíz (http://www.ejemplo.com/) apuntará a /var/www/wordpress

¿Cómo puedo permitir que cada uno sea visible en el navegador?

working -- http://www.example.com
error -- http://www.example.com/wordpress2
error -- http://www.example.com/htmlsite

Aquí está la estructura:

first wordpress: /var/www/wordpress
second wordpress: /var/www/wordpress2
static html page: /var/www/htmlsite

server {
root /var/www/wordpress;
index index.php;
...

location / {
  try_files $uri $uri/ /index.php$is_args$args;
}

location /wordpress2 {
  root /var/www/wordpress2;
  try_files $uri $uri/ /index.php$is_args$args;
}

location /htmlsite {
  root /var/www/htmlsite;
  try_files $uri $uri/ =404;
}

}

Si hago esto root /var/www;en su lugar, entonces /wordpress2 y /wordpress3 funcionan:

server {
root /var/www;
index index.php;
...

location / {
  try_files $uri $uri/ =404;
}

location /wordpress2 {
  try_files $uri $uri/ /wordpress2/index.php$is_args$args;
}

location /wordpress3 {
  try_files $uri $uri/ /wordpress3/index.php$is_args$args;
}

location /htmlsite {
  root /var/www/htmlsite;
  try_files $uri $uri/ =404;
}

}

Respuesta1

Esto debería funcionar de la manera que usted desee.

Dado que el URI se agrega al directorio especificado en la rootdirectiva, debemos especificarlo solo una vez. Sólo se deben especificar `try_files´ para cada ubicación por separado.

server {
    root /var/www/wordpress;
    index index.php;
    ...

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location /wordpress2 {
        root /var/www;
        try_files $uri $uri/ /wordpress2/index.php$is_args$args;
    }

    location /htmlsite {
        root /var/www;
        try_files $uri $uri/ =404;
    }
}

Respuesta2

Supongo que tienes tres instancias de Wordpress en tres dominios. En ese caso, deberá definir servidores para cada sitio web e instalación de Wordpress.

Si desea varias instalaciones de Wordpress en un dominio, entonces su enfoque es generalmente correcto, pero necesita definir la transferencia a PHP. Tengo un buentutorial sobre eso, pero en realidad puedes buscar en Google "tutorial de Nginx Wordpress" y encontrar 100 tutoriales.

Le sugerimos que comience haciendo que uno funcione y luego agregue otros.

Respuesta3

Esto es todo lo que necesita.

    server {
            listen 80;
            root /var/www/wordpress;
            server_name example.com www.example.com;
            index index.php; 

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

    location ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$ {
            expires max;
            log_not_found off;
        }


        location / {
            #try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php$is_args$args;
        }


     location /wordpress2 {
      root /var/www/wordpress/wordpress2;
      index index.php;
      try_files $uri $uri/ =404;

      location ~ /wordpress2 /(.+\.php)$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
     }

     location /htmlsite {
      root /var/www/wordpress/htmlsite;
      index index.php;
      try_files $uri $uri/ =404;

      location ~ /htmlsite /(.+\.php)$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }
     }
 }

información relacionada