我有这个基本的nginx配置
http {
server {
location / {
proxy_pass http://localhost:8080;
}
}
server {
listen 8080;
root /data/upl;
}
}
我在nginx上的index.html
上也有/data/upl
。
当我转到http://localhost
时-我取回了Chrome中的HTML。
将位置匹配器从/
更改为/test/
并转到http://localhost/test
后,我得到了chrome中nginx的错误404。
这是更新的配置:
http {
server {
location /test/ {
proxy_pass http://localhost:8080;
}
}
server {
listen 8080;
root /data/upl;
}
}
请帮助您理解此问题(为什么它不起作用)。
答案 0 :(得分:0)
我认为配置可能太基础了。您在该位置使用了正斜杠,这意味着您还需要通过使用index
指令来告诉nginx查找哪种类型的文件。
文档摘录
如果请求以斜杠结尾,NGINX会将其视为对目录的请求,并尝试在目录中查找索引文件。 index指令定义了索引文件的名称(默认值为index.html)。继续该示例,如果请求URI为/ images / some / path /,则NGINX会提供文件/www/data/images/some/path/index.html(如果存在)。如果没有,则默认情况下NGINX返回HTTP代码404(未找到)
我不明白您为什么使用代理,似乎不需要。这是我建议使用的配置。
server {
listen 8080;
root /data/upl;
index index.htm index.html;
location /test {
}
}
/ data / upl / test中将需要有一个index.htm或index.html文件,否则将生成404。