progetti nginx nelle sottocartelle

Sto ottenendo frustrati con la mia configuration nginx e quindi chiedo aiuto per scrivere il mio file di configuration per servire più progetti da sotto-directory nella stessa radice. Questo non è hosting virtuale poiché tutti stanno utilizzando lo stesso valore host. Forse un esempio chiarirà il mio tentativo:

  • richiesta 192.168.1.1/ dovrebbe servire index.php da /var/www/public/
  • richiesta 192.168.1.1/wiki/ dovrebbe servire index.php da /var/www/wiki/public/
  • richiesta 192.168.1.1/blog/ dovrebbe servire index.php da /var/www/blog/public/

Questi progetti stanno utilizzando PHP e usano fastcgi.

La mia configuration corrente è molto minima.

 server { listen 80 default; server_name localhost; access_log /var/log/nginx/localhost.access.log; root /var/www; index index.php index.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } } 

Ho provato diverse cose con alias e rewrite ma non sono riuscito a get le cose correttamente impostate per fastcgi. Sembra che ci sia un modo più eloquente di scrivere blocchi di posizione e duplicare root , index , SCRIPT_FILENAME , ecc.

Qualsiasi puntata per farmi capeggiare nella giusta direzione è apprezzata.

  • Il modo migliore per eseguire PHP con Nginx
  • Come installare php, mysql, apache e visual studio sullo stesso computer?
  • Devo impersonare PHP tramite FastCGI?
  • la giusta architettura server per una grande applicazione di facebook?
  • SELinux limita l'accesso Apache / PHP
  • Consenti l'accesso a PhpMyadmin solo su un host virtuale specificato
  • È l'aggiunta di utenti al gruppo www-data safe su Debian?
  • Disabilitazione delle avvertenze e delle notifiche di Deprecation di PHP
  • 3 Solutions collect form web for “progetti nginx nelle sottocartelle”

    Poiché i tuoi progetti non sono effettivamente nella stessa radice, è necessario utilizzare più posizioni per questo.

     location /wiki { root /var/www/wiki/public; } location ~ /wiki/.+\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/wiki/public$fastcgi_script_name; } location /blog { root /var/www/blog/public; } location ~ /blog/.+\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/blog/public$fastcgi_script_name; } 

    Inoltre, inserisci fastcgi_index nel file fastcgi_params e lo inserisci a livello di server, in modo da mantenere le tue località di php più piccole ansible.

    Risolve per posizione + alias:

    location / { root /var/www/public; index index.php; } location /blog/ { alias /var/www/blog/public/; index index.php; } location /wiki/ { alias /var/www/wiki/public/; index index.php; } location ~ \.php$ { #your fastcgi configuration here }
    location / { root /var/www/public; index index.php; } location /blog/ { alias /var/www/blog/public/; index index.php; } location /wiki/ { alias /var/www/wiki/public/; index index.php; } location ~ \.php$ { #your fastcgi configuration here } 

    Ecco cosa ho provato, maggiori dettagli su http://programmersjunk.blogspot.com/2013/11/nginx-multiple-sites-in-subdirectories.html

      location /Site1/ { root /usr/share/nginx/www/Site1; try_files $uri $uri/ /index.php?$query_string; } # the images need a seperate entry as we dont want to concatenate that with index.php location ~ /Site1/.+\.(jpg|jpeg|gif|css|png|js|ico|xml)$ { root /usr/share/nginx/www/Site1; } # pass the PHP scripts to FastCGI server location ~ /Site1/.+\.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; allow 127.0.0.1; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; } location /Site3/ { root /usr/share/nginx/www/Site3; } # pass the PHP scripts to FastCGI server location ~ /Site3/.+\.php$ { allow 127.0.0.1; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; #we are directly using the $request_filename as its a single php script fastcgi_param SCRIPT_FILENAME $request_filename; } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.