我是 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/example
Nginx 应该为我提供 /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
您可以删除它,或者在其他地方指定。