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

标签 javascript reactjs amazon-ec2 next.js

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

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

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

我不知道在哪里编写逻辑来在同一域上呈现基于 User-Agent 的特定构建。

最佳答案

如果您有两个不同的节点应用程序正在运行并且想要基于用户代理进行重定向,您可以使用类似 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;
    }
  }
}

关于javascript - 如何在单个域上部署自适应 Next Js 网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71233924/

相关文章:

php - 设置用户上传的标准背景图片分辨率

java - 为什么这个 Spring Boot 应用程序找不到主页?

amazon-web-services - 带有 Amazon ECR Docker 镜像的 AWS Elastic Beanstalk

image - 如何创建没有 EBS 的预留实例的 "Instance Store"AMI 镜像

javascript - 如何在 Javascript 中将两个变量的数值相加

javascript - 如何在 Vanilla JS 中使用 Firebase Polyfill

javascript - 带偏移的边栏不起作用。我做错了什么?

javascript - 尝试导入错误: './components' does not contain a default export (imported as 'App' )

reactjs - React Native 和 WMS

powershell - 如何在 PowerShell 中使用公共(public) IP 地址将 EC2 实例启动到 VPC?