我需要做一个有点奇怪的操作。
首先,我在 Debian、apache2 上运行(以用户 www-data 的身份“运行”)
所以,我有 .txt 或 .ini 或任何扩展名的简单文本文件,无关紧要。
这些文件位于具有如下结构的子文件夹中:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar 。文本
因此,文件名始终相同,“层次结构”也是如此,只需更改文件夹的名称:/folder-name-static/folder-name-dinamyc/file-name-static.txt
我应该做的是(我认为)相对简单:我必须能够通过服务器上的程序(例如python,php)读取该文件,但是如果我尝试通过浏览器检索文件内容(数字化网址www. example.com/folder1/car/foobar.txt,或通过 cUrl 等。)我必须得到一个禁止的错误,或其他什么,但不能访问文件。
即使通过 FTP 访问这些文件也是“隐藏的”,或者无论如何都无法下载(至少我与 ftp 根和用户数据一起使用),这也很好
我能怎么做?
我在网上找到了这个,放在文件 .htaccess 中:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但前提是文件位于 Web 根目录 (www.example.com / myfile.txt) 中,而不是子文件夹中。此外,在第二级(www.example.com/folder1/文件夹水果/foobar.txt)将dinamycally创建..我想,以避免随时更改.htaccess文件时间。
可以创建一个类似这样的规则,该规则适用于具有给定名称的所有文件,该文件位于 *www.example.com/folder-name-static/ *folder-name-dinamyc/***file-name -static.txt*,这些部分都是一样的,只是**那一个变化?
编辑:
正如 Dave Drager 所说,我可以将这些文件保留在 Web 可访问目录之外。但是这些目录也将包含我的用户使用的其他文件、图像和内容,因此我只是尝试不使用重复的文件夹系统,例如:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and …
Run Code Online (Sandbox Code Playgroud) 我对 nginx 很陌生,而且 - 更多用于学习目的 - 我试图配置 Nginx,以便为每个子域使用不同的用户运行 php。
例如,我想将用户john
用于所有脚本foo.example.com
,用户jack
用于bar.example.com
.
我已经在我的系统(ubuntu 服务器)上创建了用户,但我不知道如何指示 nginx 使用这些用户 - 我正在寻找一种可以轻松处理许多用户的解决方案,比如 ~2000。
查看文档,我不明白是否必须php5-cgi
为每个用户(使用不同的端口)生成一个进程,然后将它们抓取到我的sites-available
站点中(正如我所说的我是新手,但这在我看来就像服务器自杀),并且 nginx 配置中仅有的 2 页讨论了这个……是用中文写的(page1 , page2),很难用 google translate 翻译(但是,查看代码,使用的方式完全不同server-suicide
)
有什么建议吗?
更新
galador 的回答可以完成这项工作,但我正在尝试构建一个不需要为每个新站点重新启动 nginx/fpm 的 dinamycal 环境(带有通配符子域),这可能吗?
我正在构建一个环境(在 ubuntu 10.04.02 机器上)来处理具有许多(应该支持至少 1000 个)子域的网站,每个子域由不同的 FPM 池提供服务,并具有不同的用户。
所以没有什么新鲜事;我的问题是创建(并启动)一个新的 fpm 池,而不必重新加载/重新启动 FPM,这会导致(我知道,非常快)停机。
我写了一个 python 守护进程,在需要时:
我四处搜索,但没有找到使用一个池调用 fpm 的方法,这可能是一个“临时”解决方案:主 fpm 实例运行所有池,每个新实例都有自己的 fpm 实例,然后使用 cron 我停止并每周/每月/不知道重新加载 fpm
如果确实重要,服务器在 nginx 上运行,配置为使用 unix socket to fcgi,这是我的 nginx 测试配置:
server{
listen 80;
server_name ~^(?<domain>.+)\.test\.local$; # foo.test.local > myapp_foo
root /var/www/myapp/subdomains/myapp_$domain/htdocs;
location / {
index index.php;
}
location ~* \.(gif|jpg|png|ico)$ {
expires 30d;
}
location ~ \.php$ {
fastcgi_pass unix:/var/web-sock/myapp_$domain-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} …
Run Code Online (Sandbox Code Playgroud)