网上找了一堆Nginx代理静态页面的配置,很多都是把静态页面配置到根路径的,如:
server {
listen 8080;
server_name localhost;
location / {
root D:/demo;
index index.html;
}
}
这样访问的http://localhost:8080
就会访问了D盘demo目录的index.html
问题是现在我想要的效果是访问 http://localhost:8080/demo
才会访问D盘demo目录的index.html。找了一下文档,把root 改成 alias 即可,如:
server {
listen 8080;
server_name localhost;
location /demo {
alias D:/demo;
index index.html;
}
}
注意: 如果你的index.html引入资源路径是相对路径,那么引用的时候,记得加上 /demo
例如:
<script type=text/javascript src=/static/js/manifest.js></script>
改成:
<script type=text/javascript src=/demo/static/js/manifest.js></script>
root 与 alias 区别
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
alias后面必须要用“/”结束,否则会找不到文件的,而root则可有可无。