Czuję się sfrustrowany moją konfiguracją nginx, dlatego proszę o pomoc w napisaniu mojego pliku konfiguracyjnego do obsługi wielu projektów z podkatalogów w tym samym katalogu głównym. To nie jest wirtualny hosting, ponieważ wszyscy używają tej samej wartości hosta. Być może przykład wyjaśni moją próbę:
- żądanie
192.168.1.1/
powinno zostać przesłaneindex.php
z/var/www/public/
- żądanie
192.168.1.1/wiki/
powinno zostać przesłaneindex.php
z/var/www/wiki/public/
- żądanie
192.168.1.1/blog/
powinno zostać przesłaneindex.php
z/var/www/blog/public/
Te projekty używają PHP i fastcgi.
Moja obecna konfiguracja jest bardzo minimalna.
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;
}
}
Próbowałem różnych rzeczy alias
, a rewrite
jednak nie był w stanie dostać rzeczy prawidłowo ustawione dla FastCGI. Wydaje się, że powinien być bardziej wymowny sposób niż pisanie bloków lokalizacji i powielanie root
, index
, SCRIPT_FILENAME
, itd.
Doceniamy wszelkie wskazówki, które pozwolą mi podążać we właściwym kierunku.
Odpowiedzi:
Ponieważ Twoje projekty nie są w rzeczywistości w tym samym katalogu głównym, musisz w tym celu użyć wielu lokalizacji.
Ponadto, umieść fastcgi_index w pliku fastcgi_params i dołącz go na poziomie serwera, w ten sposób utrzymasz swoje lokalizacje php tak małe, jak to możliwe.
źródło
Rozwiązuje według lokalizacji + alias:
źródło
Oto, co próbowałem, więcej szczegółów na http://programmersjunk.blogspot.com/2013/11/nginx-multiple-sites-in-subdirectories.html
źródło