web 服务器配置

2016-02-04 15:25:50 +08:00
 hayao650
我现在想配置 nginx 实现以下需求:
1 、主页通过 nginx 直接访问一个静态页面,静态页面目录是:/www/main/index.html
2 、其他服务接口通过 nginx 代理,转发给后端的 python 服务,端口是 20002

我现在的想法是通过两个 location 配置实现,但是在折腾了半天,也没有折腾出来,求各位前辈、高手给指点指点

location = / {
root /www/main;
index index.html;
}
location / {
proxy_pass http://xx.xx.xx.xx:20002;
}
我现在这种写法一直不能实现,我对这种写法的理解是,当我访问首页 www.xxx.com 的时候, nginx 通过精确匹配,找到第一个 location ,
当我访问 www.xxx.com/xxx 的时候, nginx 找到第二个 location,
但是这样配置的话,首页无法访问

我在单独写这两个 location 中的一个时,都能正常访问,但是放在一起就不能访问,我感觉两个应该没有冲突啊,我访问首页 www.xxx.com 的时候,应该是精确匹配到第一个 location ,访问 www.xxx.com/xxx 的时候没有匹配到,最后由第二个 location 处理
2141 次点击
所在节点    问与答
5 条回复
zingl
2016-02-04 17:01:26 +08:00
先后顺序换一下试试
lhbc
2016-02-04 17:56:14 +08:00
location = / {
root /www/main;
index index.html;
}

location = /index.html {
root /www/main;
index index.html;
}

location / {
proxy_pass http://xx.xx.xx.xx:20002;
}
lhbc
2016-02-04 18:03:19 +08:00
还是建议把后端的路径改为 location ^/xxx/ 这样的,否则以后很蛋疼。
比如你要增加一个静态文件,怎么办?
只把 /xxx/ 反代给后端,其它 URI 就随便你用了。

用 try_files 也可以达到这个效果,不过安全性不及上面的方法好,因为任何不存在的文件都提交给后端处理了。
hayao650
2016-02-04 18:07:50 +08:00
OK,谢谢大家了,已将解决了,学习了,看来放假的时候要好好看看 nginx 文档了
msg7086
2016-02-05 00:58:18 +08:00
try_files 似乎方便一些。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX