如何在单个域上部署自适应 Next Js 网站?

发布于 2025-01-09 04:58:46 字数 379 浏览 0 评论 0原文

我用 Next js 构建了一个自适应网站;它有两个版本,一个用于移动设备,另一个用于桌面设备。两个版本都是部署在两个不同环境中的独立 Nextjs 项目。我想将两者部署在同一域上并根据用户代理加载各自的版本。

示例: www.test.com 如果找到移动用户代理,将加载移动网站,否则桌面网站

我可以加载网站的相应版本如果我有一个子域,例如移动版本的“m.test.com”和桌面版本的“test.com”(为此,我在 next.config 中添加了重定向逻辑。基于 User-Agent 的 Node.js)。

我不知道在哪里编写逻辑来渲染基于同一域上的用户代理的特定构建。

I have built an adaptive website in Next js; Which has two versions one for mobile devices and another for Desktop. Both versions are separate Nextjs projects deployed on two different env. I want to deploy both on the same domain and load the respective versions based on user-agent.

example: www.test.com will load mobile site if found mobile User-Agent else Desktop site

I'm able to load the respective version of the site If I have a sub-domain like "m.test.com" for the mobile version and "test.com" for the desktop version ( for this I have added redirect logic in next.config.js based on User-Agent).

I don't know where to write the logic to render a specific build based on User-Agent on the same domain.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流心雨 2025-01-16 04:58:46

如果您有两个不同的节点应用程序正在运行,并且想要基于用户代理进行重定向,您可以使用 nginx 的 $http_user_agent 之类的东西来重写到您的应用程序可以侦听的不同端口:

http {
  map $http_user_agent $ua_port {
    default '3000';             # port 3000 for your desktop App
    ~(iPhone|Android) '4000';   # port 4000 for mobile App
  }

  server {
    location / {
        proxy_pass http://localhost:$ua_port;   # proxy_pass to port
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
  }
}

If you have two different Node Apps running and want to redirect based on User Agent, you can use something like nginx's $http_user_agent to rewrite to different ports where your Apps can listen on:

http {
  map $http_user_agent $ua_port {
    default '3000';             # port 3000 for your desktop App
    ~(iPhone|Android) '4000';   # port 4000 for mobile App
  }

  server {
    location / {
        proxy_pass http://localhost:$ua_port;   # proxy_pass to port
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文