小编Str*_*rae的帖子

如何拒绝网络访问某些文件?

我需要做一个有点奇怪的操作。

首先,我在 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)

files permissions apache-2.2

21
推荐指数
1
解决办法
6万
查看次数

如何配置 nginx+php (fcgi) 以使用不同的用户运行每个子域?

我对 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 环境(带有通配符子域),这可能吗?

php nginx user-management fastcgi

4
推荐指数
1
解决办法
7233
查看次数

如何在不重新加载/重启 fpm 的情况下将池添加到 FPM (nginx)?

我正在构建一个环境(在 ubuntu 10.04.02 机器上)来处理具有许多(应该支持至少 1000 个)子域的网站,每个子域由不同的 FPM 池提供服务,并具有不同的用户。

所以没有什么新鲜事;我的问题是创建(并启动)一个新的 fpm 池,而不必重新加载/重新启动 FPM,这会导致(我知道,非常快)停机。

我写了一个 python 守护进程,在需要时:

  1. 创建系统用户
  2. 设置子域的 Web 根
  3. 将 subdomain.conf 创建到我的 /etc/php5/fpm/fpm.d/ 文件夹中

我四处搜索,但没有找到使用一个池调用 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)

nginx fastcgi php5 cgi php-fpm

3
推荐指数
1
解决办法
6188
查看次数

标签 统计

fastcgi ×2

nginx ×2

apache-2.2 ×1

cgi ×1

files ×1

permissions ×1

php ×1

php-fpm ×1

php5 ×1

user-management ×1