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

nginx 如何做多语言站点的跳转

  •  
  •   aries910 · 2022-03-25 10:57:55 +08:00 · 1448 次点击
    这是一个创建于 1008 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设有站点 aa.com ,并且有前后台,

    在服务器上部署了两套相同站点端口分别 5000 和 5001 ,对应了语言是 en 和 zh, 有没有办法在访问 aa.com/en 跳转 5000 端口的站点,aa.com/zh 跳转 5001 的站点 同样的访问 aa.com/en/admin 访问的是 5000 端口的站点后台,aa.com/zh/admin 是 5001 端口的站点后台,

    主要就是域名后面的地址怎么保留传递到端口后的站点上,

    求大佬指教下,怎么写 nginx 的配置文件

    6 条回复    2022-03-25 11:46:34 +08:00
    yaott2020
        1
    yaott2020  
       2022-03-25 10:58:50 +08:00 via Android
    就不能做成一个站点,然后内置语言切换吗
    aries910
        2
    aries910  
    OP
       2022-03-25 11:00:15 +08:00
    @yaott2020 改别人的代码。。。作为一个程序员,应该不用多说了吧。。。。
    yaott2020
        3
    yaott2020  
       2022-03-25 11:02:20 +08:00 via Android
    那当我没说😂
    rrfeng
        4
    rrfeng  
       2022-03-25 11:04:53 +08:00
    location /zh {
    rewrite ^/zh/(.*)$ /$1 break; # 如果后端 url 不带 /zh 的话。否则不需要
    proxy_pass http://localhost:5000;
    }
    aries910
        5
    aries910  
    OP
       2022-03-25 11:34:19 +08:00
    @rrfeng 请问下,这样是不是把作为 prefix 的语言 /en /zh 这段地址一起转发给了后端的站点啊?
    jifengg
        6
    jifengg  
       2022-03-25 11:46:34 +08:00
    location /zh/ {
    proxy_pass http://127.0.0.1:5000/;
    }

    区别就是,后面都多了 /做结尾。
    可以 google 一下 nginx 的 localtion 斜杠的区别。

    访问 /zh/admin 时,被代理端(也就是监听 5000 的程序)只知道有人访问了 http://127.0.0.1:5000/admin ,不知道还有 /zh 这一段
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5353 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:54 · PVG 13:54 · LAX 21:54 · JFK 00:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.