V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
hhs66317
V2EX  ›  NGINX

请教一个 NGINX 问题,部分路径请求 http://127.0.0.1:3000,其他未定义路径访问都请求线上的服务器环境

  •  
  •   hhs66317 · 2019-12-14 16:39:29 +08:00 · 3607 次点击
    这是一个创建于 1791 天前的主题,其中的信息可能已经有所发展或是发生改变。

    标题有限,写的不太情况,这里举例说下。。

    有个测试服务器,IP 是 172.16.0.8,想通过绑定 host 的方式访问该服务器,比如:

    127.16.0.8 www.abc.com
    

    该测试服务器通过 NGINX 来反向代理到本机的 http://127.0.0.1:3000 环境

    这里需求有些不常见,期望的访问效果,举例如下:

    1、访问自定义路径 http://www.abc.com/xxx/yyy.php 时,反向代理到 http://127.0.0.1:3000 2、访问其他路径,比如 http://www.abc.com/1/2/3.php 时,转发到线上环境的 http://www.abc.com/1/2/3.php

    总之就是只有明确指定的路径才会反向代理到 http://127.0.0.1:3000,其他的都直接请求线上环境。

    如果有描述不清楚的地方,请指正,谢谢!

    9 条回复    2019-12-24 15:13:46 +08:00
    paragon
        1
    paragon  
       2019-12-14 17:04:33 +08:00
    这个你定义两个 location 不就行了嘛?
    nightwitch
        2
    nightwitch  
       2019-12-14 17:19:20 +08:00
    伪代码
    location xxx
    {
    proxy_pass 127.0.0.1:3000
    }
    location /
    {
    root_path xxxxxx
    }
    xiri
        3
    xiri  
       2019-12-14 18:09:10 +08:00
    把 proxy_pass 放在单独的 location 里面不就行了吗,不过要注意一下 location 的匹配优先级
    hhs66317
        4
    hhs66317  
    OP
       2019-12-15 11:46:20 +08:00 via Android
    @nightwitch 这个 root_path 可以写 http://www.abc.com
    hhs66317
        5
    hhs66317  
    OP
       2019-12-15 11:47:55 +08:00 via Android
    @paragon 主要是不知道怎么让其他请求通过 Nginx 转发到线上环境
    realpg
        6
    realpg  
       2019-12-15 12:36:26 +08:00
    找一个会基础 nginx 配置的人吧
    我觉得你这些需求 50 块钱就能解决问题
    Hanada
        7
    Hanada  
       2019-12-15 12:56:42 +08:00 via Android
    @hhs66317 你的那个是线上环境的话继续用 proxy_pass 反向代理你的 http://www.abc.com
    AlbertSun
        8
    AlbertSun  
       2019-12-15 22:20:12 +08:00
    我想我大概理解你的意思了,这样试试:
    server {
    listen 80;
    server_name www.abc.com;
    location /xxx {
    proxy_pass http://127.0.0.1:3000;
    # 其余代码
    }
    location / {
    proxy_pass http://www.abc.com;
    # 其余代码
    }
    }
    前提是 127.16.0.8 这台服务器不要修改 www.abc.com 的 host。
    hhs66317
        9
    hhs66317  
    OP
       2019-12-24 15:13:46 +08:00
    感谢各位,解决了我的问题!

    最近杂事较多,才想起来过来看看,惭愧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1380 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.