如何获取 Nginx 非根(“/”)位置来提供文件服务?

如何获取 Nginx 非根(“/”)位置来提供文件服务?

我是 Nginx 新手。我租了一台装有 Ubuntu 12.04 的小型 VPS 来测试。我没有租域名,所以我直接使用 ip 发出请求。对于这个问题,我们假设 ip 是209.208.26.89. 从官方 ppa 安装最新稳定的 Nginx。

安装 Nginx 并检查其正常运行后(使用浏览器访问http://209.208.26.89),我从 /etc/nginx/sites-enabled 中删除了默认配置。我首先使用了这个配置:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/www-data/public-www;
        index index.html index.htm; #index.html is inside /home/www-data/public-www

        server_name 209.208.26.89; #remember, no domain

        location /example {
                root /home/www-data/public-www/example;
                index hello.html; #hello.html is inside /home/www-data/public-www/example
                try_files $uri $uri/ =404;
        }
}

所有目录和权限均已正确设置。

当我访问时,http://209.208.26.89/example看到的是 404。奇怪的是,访问http://209.208.26.89/会产生文件 hello.html。

那应该怎么做?我正在将该文件设置为位置/example

然而,我尝试这样做:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/www-data/public-www;
        index index.html index.htm;

        server_name 209.208.26.89; #remember, no domain

        location /example {
                alias /home/www-data/public-www/example; #HERE'S THE CHANGED LINE
                index hello.html;
                try_files $uri $uri/ =404;
        }
}

使用此配置,http:// 209.208.26.89/example将正确生成 hello.html。但http:// 209.208.26.89将生成相同的文件。

说清楚点,我想要做的是:当请求时,http:// 209.208.26.89/exampleNginx 应该为我提供 /home/www-data/public-www/example/example.html。我用我的第二个配置完成了它,缺点是它是服务器http:// 209.208.26.89。但我的第二个要求是 'http:// 209.208.26.89/',但它没有给我提供任何服务(应该返回 404)。

我确信我遗漏了一些显而易见的东西,但似乎没有指南或文档能给我指明正确的方向。有人能帮我了解发生了什么吗?

答案1

我相信这是由这一行引起的:

root /home/www-data/public-www;

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

您可以删除它,或者在其他地方指定。

相关内容