小编32b*_*oat的帖子

如何在 nginx vhost 中添加 open_basedir 路径

在 php.ini 我已经设置

open_basedir = /home/user/web/
Run Code Online (Sandbox Code Playgroud)

现在我想在需要包含来自 /usr/share/phppgadmin 的文件的子域上运行 phppgadmin。
因此,我在此主机的 nginx-config 中添加了以下行:

fastcgi_param PHP_VALUE open_basedir="/home/user/web/:/usr/share/phppgadmin/";
Run Code Online (Sandbox Code Playgroud)

并重新启动nginx。但是,由于以下错误,我无法访问该站点:

[错误] 31440#0: *1 FastCGI 发送到 stderr: "PHP 警告: include_once(): open_basedir 限制生效。文件(/usr/share/phppgadmin/libraries/lib.inc.php) 不在允许的路径内(s): (/home/user/web/)在 /usr/share/phppgadmin/info.php 第 10 行

此处未列出第二条路径的原因可能是什么?将 open_basedir 添加到虚拟主机还需要什么?我只使用了 /sites-available 中的默认文件。

编辑总是想到重新启动fpm ...

service php5-fpm restart
Run Code Online (Sandbox Code Playgroud)

php nginx fastcgi open-basedir

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

nginx 只将特定的服务器名重写为 https

这是关于两个子域。第一个 (www) 应该通过 http 访问。第二个(云)应该通过 https 访问。

这些是我的条目的相关部分:

server {
        listen 80;
        server_name cloud.example.de;
        rewrite ^ https://$server_name$request_uri? permanent;  # enforce https
}

server {
        listen 443 ssl;
        server_name cloud.example.de;
        root /home/user/web/cloud;
}

server {
        listen 80;
        server_name www.example.de;
        root /home/user/web/cms;

        #etc.
}
Run Code Online (Sandbox Code Playgroud)

当我现在调用http://cloud.example.de 时,我被重定向到https://cloud.example.de,很好。但是当我调用http://www.example.de 时,我也被重定向到https://www.example.de,这会将我带到 cloud.example.com 的内容,因为这是唯一设置为的服务器名称由端口 443 使用

。 www 子域的访问日志中没有条目。
还有另一个指向 phpPgAdmin 的子域。我可以正常访问它,它不会被重写。

server {
        listen 80;
        server_name pgsql.example.de;
        root /home/user/web/phppgadmin;

        #etc
}
Run Code Online (Sandbox Code Playgroud)

有什么不见了?仅当服务器名称匹配 cloud.example.de 时才应进行重写
服务器条目的顺序是否相关或无关紧要?


在 …

rewrite nginx https ubuntu-11.04

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

标签 统计

nginx ×2

fastcgi ×1

https ×1

open-basedir ×1

php ×1

rewrite ×1

ubuntu-11.04 ×1