2017-05-14 3 views
1

J'essaie d'exécuter Nextcloud, une page d'accueil et de la paperasserie sous différents emplacements, mais je n'arrive pas à comprendre comment configurer correctement ma configuration nginx.Utilisation de Nginx avec Nextcloud/Site Web/Paperwork parallèle

Mon arbre de travail ressemble à ceci:

/var/www/
| -> site
| -> nextcloud
| -> documents

My Homepage est accessible via web.domain.com et mon Nextcloud est joignable avec cloud.domain.com. Maintenant, je veux que Paperwork soit accessible sous web.domain.com/notes. L'index.php de Paperwork se trouve dans le sous-dossier "paperwork/frontend/public".

Ceci est mon attemp pour résoudre ce (sans l'ensemble ssl et la partie du nuage):

server{ 
    listen 443 ssl http2; 
    server_name web.domain.com; 
    error_log /var/log/nginx/debug.log debug; 

    root /var/www/website; 
    location/{ 
    index index.php index.html; 
    } 

    location /notes { 
      alias /var/www/paperwork/frontend/public; 
      index index.php index.html index.htm; 
      try_files $uri $uri/index.php; 
    } 

    location ~ /(nextcloud|backups) { 
      deny all; 
      return 403; 
    } 
    location ^~ /nextcloud/ { 
      deny all; 
      return 402; 
    } 
    location ^~ /nextcloud/ { 
      deny all; 
      return 402; 
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      alias /var/www/paperwork/frontend/public; 
      index index.php index.html index.htm; 

      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME 
      $document_root$fastcgi_script_name; 
      include fastcgi_params; 

    } 
} 

J'ai essayé très différent des solutions mais je eather obtenir un 404 parce qu'il utilise le mauvais répertoire et ne peut pas trouver /var/www/notes/index.php (ou des erreurs similaires) ou nginx me retourne juste l'index.php comme un fichier-téléchargement.

Merci d'avance!

Répondre

0

Utilisez des blocs d'emplacement imbriqués pour une solution plus propre. Notez le modificateur ^~ pour éviter toute ambiguïté. Voir this document pour plus.

Essayez:

location ^~ /notes { 
    alias /var/www/paperwork/frontend/public; 
    index index.php index.html index.htm; 

    if (!-e $request_filename) { rewrite^/notes/index.php last; } 

    location ~ \.php$ { 
     if (!-f $request_filename) { return 404; } 

     fastcgi_pass unix:/var/run/php5-fpm.sock; 

     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $request_filename; 
    } 
} 

Il y a un long standing bug en ce qui concerne l'utilisation de alias avec try_files. Voir this caution sur l'utilisation de if.

Incluez fastcgi_params avant d'utiliser la directive fastcgi_param, car elle risque d'écraser vos paramètres en mode silencieux.

+0

Juste essayé et son fonctionnement. Vous êtes aweseome.Thx! –