@VladlenO

Как изолировать каталоги в nginx?

Доброго времени дня и ночи.

Нигде не могу найти такую фичу как в апаче, где одной строчкой прописывается функция, запрещающая листинг и добавление файлов на директорию выше, чем прописаный каталог в виртуальных хостах. Пытался в самой системе создать разных пользователей и назначить им директории, но листинг и добавление файлов через загрузку работает выше назначенных хостов в nginx.

вот пример одного из виртуальных хостов

server {
        server_name ****.****net;
        root  /var/www/shop;
        index index.php;
        # add_header Access-Control-Allow-Origin *;
        # serve static files directly
		    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
	set_real_ip_from  192.168.0.102;
	real_ip_header    X-Real-IP;
    location = /sitemap.xml {
    	rewrite ^(.*)$ /index.php?route=feed/google_sitemap break; 
  	} 

	location = /googlebase.xml {
		rewrite ^(.*)$ /index.php?route=feed/google_base break; 
	} 

	location / {
	# This try_files directive is used to enable SEO-friendly URLs for OpenCart
	try_files $uri $uri/ @opencart;
	}

  location @opencart {
    rewrite ^/(.+)$ /index.php?_route_=$1 last;
  }

        location ~* \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
                deny all;
        }

#    listen 443 ssl; # managed by Certbot
#    ssl_certificate /etc/letsencrypt/live/****.****.net/fullchain.pem; # managed by Certbot
#    ssl_certificate_key /etc/letsencrypt/live/****.****.net/privkey.pem; # managed by Certbot
#    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
#    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {
	listen 80;
	listen [::]:80;
    return 301 https://$server_name;
	server_name ****.****.net);
	root /var/www/shop;
	index index.html;

	location / {
		try_files $uri $uri/ =404;
	}
}
server {
    if ($host = ****.****.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
        listen 443;
        server_name ****;
    return 404; # managed by Certbot
}
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@jimquery
Т.е. у тебя root /var/www/shop, а файлы через php заливаются в /var/www?
Как минимум, в таком случае проверить владельца и права на каталог /var/www и от какого пользователя работают процессы nginx, php-fpm (должен быть не root).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы