Nginx-使用路径中的空格设置根位置

时间:2018-12-24 06:48:09

标签: nginx nginx-location


我正在尝试为我的项目配置nginx。逐步进行:

  • 创建配置文件myproject

    --/etc/nginx/sites-available
    ----myproject
    
  • myproject文件的内容

    server {
        listen 80;
        listen [::]:80;
    
        root "/path/to/html/My Project/company/myproject";
        index index.php index.html index.htm index.nginx-debian.html;
        server_name myproject.localhost;
    
        location / {
                try_files $uri $uri/ /index.php?$request_uri;
    
                location = /index.php {
                        include                 /etc/nginx/fastcgi_params;
                        fastcgi_pass            unix:/run/php/php7.0-fpm.sock;
                        fastcgi_param           SCRIPT_FILENAME "/media/path/to/html/My Project/company/myproject/index.php";
                }
        }
    }
    

重新启动服务nginx并尝试在浏览器中加载myproject.locahost,我得到了“找不到文件”。

在nginx错误日志中查看最新行,我得到了以下错误

9055#9055: *4 stat() "/media/path/to/html/My Project/company/myproject/" failed (13: Permission denied), client: 127.0.0.1, server: myproject.localhost, request: "GET / HTTP/1.1", host: "myproject.localhost"
9055#9055: *4 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: myproject.localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "myproject.localhost"

如果我将其移动到没有空间的目录路径中,它似乎可以工作。 如何定义此路径以使其起作用?

1 个答案:

答案 0 :(得分:0)

您不应在文件名或目录名中使用带空格的路径。但是一般来说,Unix文件或目录名称可以包含/以外的任何字符(始终是目录分隔符)和空字节(不能使用= D)。尝试在文件或目录名称中不要使用空格,$,;,|,<,>等,否则应在转义符号后使用反斜杠\对其进行转义。