Nginx使用类似apache的位置

时间:2017-02-20 14:58:28

标签: nginx nginx-location

我正在尝试将我的私人使用者从apache迁移到nginx,但我无法让这个位置工作。

我的服务器有多个应用程序,可以在某些/ root用户中使用,例如url.com/git url.com/mediaWiki,url.com/vnstat url.com/redmine

在apache中,每个应用都有一堆配置文件:

redmine.conf

<Location "/redmine">
    Options none
    Require all granted

    PassengerEnabled On
    RailsBaseURI /redmine
    RailsEnv production
</Location>

vnstat_php.conf

Alias /vnstat /var/www/vnstat_php

<Directory /var/www/vnstat_php>
        DirectoryIndex index.php
        Require all granted
</Directory>

我试图在nginx上复制这个,但到目前为止,我最好的尝试最终得到了一个奇怪的网址。我只管理在主要的ngix配置文件上写的东西:

server {
    listen       8123 default_server;
    listen       [::]:8123 default_server;
    server_name  _;
    root         /var/www/html;

    location / {
    }

    location /vnstat/ {
        root   /var/www/vnstat_php/;
        index  index.php;
    }
}

根页面正常工作,但/ vnstat链接将我发送到

2017/02/20 11:37:19 [error] 27538#0: *1 "/var/www/vnstat_php/vnstat/index.php" is not found (2: No such file or directory), client: 177.92.59.216, server: _, request: "GET /vnstat/ HTTP/1.1", host: "url.com:8123"

它正在/ var / www / vnstat_php /中寻找一个vnstat目录,而不是以root身份使用它。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

http://nginx.org/en/docs/http/ngx_http_core_module.html#root

所述
  

只需在根指令的值中添加URI即可构建文件的路径。如果必须修改URI,则应使用别名指令。

你应该在这种情况下使用别名:

http://nginx.org/en/docs/http/ngx_http_core_module.html#alias

location /vnstat/ {
  alias /var/www/vnstat_php/;
}

但是将PHP与nginx一起使用时,您应该考虑使用FastCGI:https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/