V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hayao650
V2EX  ›  问与答

web 服务器配置

  •  
  •   hayao650 · 2016-02-04 15:25:50 +08:00 · 2318 次点击
    这是一个创建于 3233 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在想配置 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 处理
    5 条回复    2016-02-05 00:58:18 +08:00
    zingl
        1
    zingl  
       2016-02-04 17:01:26 +08:00
    先后顺序换一下试试
    lhbc
        2
    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
        3
    lhbc  
       2016-02-04 18:03:19 +08:00
    还是建议把后端的路径改为 location ^/xxx/ 这样的,否则以后很蛋疼。
    比如你要增加一个静态文件,怎么办?
    只把 /xxx/ 反代给后端,其它 URI 就随便你用了。

    用 try_files 也可以达到这个效果,不过安全性不及上面的方法好,因为任何不存在的文件都提交给后端处理了。
    hayao650
        4
    hayao650  
    OP
       2016-02-04 18:07:50 +08:00
    OK,谢谢大家了,已将解决了,学习了,看来放假的时候要好好看看 nginx 文档了
    msg7086
        5
    msg7086  
       2016-02-05 00:58:18 +08:00
    try_files 似乎方便一些。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   860 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.