Как настроить nginx для загрузки пробных _файлов из другой папки?

Мне нужна помощь в настройке nginx для загрузки файлов из другой папки. Вот мой конфиг:

index index.php;

server {
    server_name domain.com;
    root /www/domain.com/www/;

    location / {
            try_files $uri $uri/ /php_www/index.php;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index /php_www/index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
    }

    error_page  404  /404.html;

    error_log /var/log/nginx/error.log;

}

Проблема в том, что /php _www/ не находится внутри корня, определенного в nginx.

У меня есть 4 разные папки, с которыми мне нужно это сделать, вот как выглядит моя структура папок:

/www/domain.com/www/
/www/domain.com/php_www/
/www/domain.com/content1/
/www/domain.com/content2/

Что я пытаюсь сделать, так это то, что когда посетитель переходит на domain.com/page1/content1/, я хочу, например, загрузить контент из папки content1. Причина этого в том, что у меня есть несколько проектов git с отдельными репозиториями... это позволит мне запустить определенные области веб-сайта в производство, не влияя ни на что другое. Я бы не хотел, чтобы все мои файлы/контент были доступны в папке /www, поэтому URL-адреса не могут быть атакованы методом грубой силы при поиске контента.

Надеюсь, это имеет смысл!

Рабочее решение (взято из этого комментария)

location ^~ / { 
    root /www/domain.com/php_www/; 
    try_files $uri $uri/ /index.php; 
    location ~* \.(?:php|html)$ { 
        try_files $uri =404; 
        fastcgi_pass 127.0.0.1:9000; 
        include /etc/nginx/fastcgi_params; 
    }
}
7
задан Chris White 22 February 2018 в 22:56
поделиться