Nginx-重写位置

时间:2018-06-25 19:52:57

标签: nginx ubuntu-16.04 nginx-location

我想在我的Nginx服务器(Ubuntu 16.04)上有2个不同的位置。一张是我的HTML页面( page.com; page.com/sth/sth2 ),它是 / var / www / html ,另一张是我的PHP API( page .com / api; page.com/api/v1/test )在 / var / www / api 中。对API的每个请求都应转到api.php文件(我在那儿有路由)。

我正在尝试执行此操作,目前page.com/api/api.php可以工作,但是page.com/api/v1/test无法正常工作(我收到404 Not Found错误)。

root /var/www/html;

location ^~ /api/ {
    root /var/www;
    rewrite ^(.*)$ var/www/api/api.php last;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME /var/www/api/api.php;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

location / {
    index index.html;
    try_files $uri $uri/ =404;
}

location ~ /\.ht {
    deny all;
}

1 个答案:

答案 0 :(得分:0)

只需将/ api /位置块与以下内容交换:

lookup_field

然后所有这些请求都发送到api.php,您就可以在那里处理路由了,就像您仍然可以这样做一样。

您可能也不需要此部分:

lookup_url_kwarg

因为Nginx始终不对.htaccess文件执行任何操作-因此没有安全风险。