端口号未隐藏在 nginx 反向代理(下一个 js 服务器)中

2023-12-13

我正在尝试通过 create-next-app 部署 next-js 应用程序,我有一个像这样的自定义 Express 服务器 -

const express = require('express')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const nextApp = next({ dev })
const handle = nextApp.getRequestHandler()

const fs = require('fs')

nextApp.prepare()
.then(() => {
    const server = express ()


    let port = 3000;

    let options = {
        key: fs.readFileSync('some key..', 'utf-8'),
        cert: fs.readFileSync('some cert..', 'utf-8'),
    };


    server.get(
        ...
    )


    let app = https.createServer(options, server)
    .listen((port), function(){
    console.log("Express server listening on port " + port);
    });

})
.catch((ex) => {
    console.error(ex.stack)
    process.exit(1)
})

当有人输入 URL subdomain.maindomain.com 时,我想将其部署为网站,因此我保存了两个 nginx 配置文件,如下所示 -

/etc/nginx/sites-available/default AND /etc/nginx/sites-available/subdomain.maindomain.com

默认文件包含这个

server {

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name maindomain.com www.maindomain.com;

    location / {
            # try_files $uri $uri/ =404;
            proxy_pass http://localhost:3000;
            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;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/maindomain.com/fullchain.pem;$
    ssl_certificate_key /etc/letsencrypt/live/maindomain.com/privkey.pe$
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

subdomain.maindomain.com 文件如下所示

server {
if ($host = www.subdomain.maindomain.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot


if ($host = subdomain.maindomain.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot


    listen 80;
    listen [::]:80;

    root /var/www/subdomain.maindomain.com/somecodefolder/;
    index index.html index.htm index.nginx-debian.html;

    server_name subdomain.maindomain.com www.subdomain.maindomain.com;


    location / {

        proxy_pass http://localhost:3000;
        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;
       # try_files $uri $uri/ =404;
    }

}

如果我正在打字https://subdomain.maindomain.com:3000,一切正常,我看到我的网站正在运行。但是当我打字时https://subdomain.maindomain.com(没有端口号)它什么也没显示。当我只输入 url 而不输入端口号时,如何获取我想要的内容。我尝试了很多组合,但都做不到。请有人帮助我两天以来一直在尝试。


尝试使用其他应用程序以验证您的应用程序中是否存在问题。

使用域而不是端口的 nginx 配置并不复杂。

Steps

  • npm 安装
  • 节点 main_domain.js
  • 节点子域.js
  • 检查网络是否正常工作:

localhost

  • 将以下行添加到您的 /etc/hosts.conf 中:这将帮助我们使用域名,而无需支付 godaddy、namecheap 等域名的费用。
127.0.0.1 maindomain.com
127.0.0.1 subdomain.maindomain.com
  • 在 /etc/nginx/conf.d 中创建一个名为maindomain.com.conf或任何你想要的,但使用 .conf
server {
    listen 80;
    server_name maindomain.com;
    
    location / {
        proxy_pass http://localhost:3000/;
    }
}
  • 在 /etc/nginx/conf.d 中创建一个名为conf.d/subdomain.maindomain.com.conf或任何你想要的,但使用 .conf
server {
    listen 80;
    server_name subdomain.maindomain.com;
    
    location / {
        proxy_pass http://localhost:3001/;
    }
}
  • 重启nginx
service nginx restart
  • 现在,您可以使用域名代替 ip:port

domains

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

端口号未隐藏在 nginx 反向代理(下一个 js 服务器)中 的相关文章

随机推荐

  • 找出所有可能的欧拉循环

    我已经实现了一种算法来查找无向图中给定起始顶点的欧拉循环 使用 DFS 并删除访问的边 但它总是只返回一条路径 如何修改算法以搜索顶点的所有可能的欧拉循环 这是相关代码 typedef int Graph 200 200 adjacency
  • 如何使用socket.io从节点连接到telnet服务器

    我可能没有输入正确的搜索词 但我似乎找不到允许我的节点应用程序启动与另一个 telnet 服务器 非节点 的 socket io 客户端连接的好例子 下面是我的节点应用程序尝试连接到 telnet 服务器 var ioc require s
  • 除了 COM 之外,还有更好的方法来远程控制 Excel 吗?

    我正在开发一个回归测试工具 该工具将验证大量的 Excel 电子表格 目前 我使用最新版本的 pywin32 产品通过 Python 脚本通过 COM 控制它们 不幸的是 COM 似乎有许多恼人的缺点 例如 最轻微的干扰似乎就能中断与 CO
  • 创建用于导航的 ViewModel

    我有一个带有多个视图的 MVC 4 应用程序 IE 产品 食谱 分销商和商店 每个视图都基于一个模型 让我们保持简单 假设我的所有控制器都传递一个类似的视图模型 看起来像我的 Product 操作 public ActionResult I
  • 从代码隐藏中将页面异步模式设置为 true

    是否可以在我的代码隐藏文件中设置页面指令的异步模式 我没有办法直接修改属性 并努力寻找一种在我的代码隐藏中实现此功能的方法 我尝试在我的 Page Load 方法中添加Page AsyncMode true 但它返回以下错误 由于其保护级别
  • 如何使用 # 作为 CoffeeScript hereregex 的一部分?

    我正在尝试匹配 jQuery Mobile URL 的哈希片段 如下所示 matches window location hash match we re interested in the hash fragment the path t
  • Python:Flask 的模拟补丁错误

    在编写 Python 方面 我完全是个新手 更不用说测试它了 这是我的 Flask 端点 blueprint route mailing finish
  • 如何更换|| (两个管道)来自带有 | 的字符串(一)管道

    我收到此标签内一些 json 格式图像的响应 xmlImageIds 57948916 57948917 57948918 57948919 57948920 57948921 57948 922 57948923 57948924 579
  • 复制构造函数需要调用依赖于对象的方法,但构造函数不能是虚拟的

    我有一个带有两个继承类的抽象基类 在这两个类中 我定义了一个由构造函数使用的虚拟方法 现在我需要创建一个复制构造函数 但我不能将复制构造函数声明为虚拟 但我希望其中的方法调用依赖于作为参数提供的对象的类型 我该如何解决这个问题 现在我使用基
  • 当有受保护的工作表时如何保持宏运行?

    我用密码保护了工作表 4 因为工作表 4 中的某些单元格不允许用户输入 密码是 1234 但是 我想运行我的宏 如果出现错误 单元格将自动突出显示 我的宏未运行并出错 因为我要突出显示的单元格位于受保护的工作表中 当我单击验证按钮时 如何使
  • 你能指定 std::getline 中什么不是分隔符吗?

    我希望它将任何非字母字符视为分隔符 我怎样才能做到这一点 你不能 默认分隔符是 n while std getline std cin str n is implicit 对于其他分隔符 请传递它们 while std getline st
  • mongoDB 聚合:根据数组名称求和

    我有一场比赛的以下数据 date 20140101 duration 23232 win player Player1 score 2344324 player Player4 score 23132 loss player Player2
  • 如何处理大多数十进制小数无法准确表示为二进制的事实?

    所以 我们知道像 0 1 这样的分数无法用二进制精确表示 这会导致精确问题 例如这里提到的 在 C 中格式化双精度数以进行输出 我们知道我们有十进制类型来表示数字 但问题是 很多数学方法不支持十进制类型 所以我们将它们转换为双精度 这再次破
  • 为什么 R 中的 apply() 方法比 for 循环慢?

    作为最佳实践 我试图确定创建一个函数是否更好apply 它穿过一个矩阵 或者是否最好简单地通过该函数循环一个矩阵 我尝试了两种方法并惊讶地发现apply 速度较慢 任务是获取一个向量并将其评估为正或负 然后返回一个向量 如果为正则返回 1
  • 使用 React 将提交的表单值保存在 JSON 文件中

    我正在尝试创建一个 React 表单 它将在提交时使用表单中的值更新 JSON 文件 最终结果是 每次提交表单时 这都会在 JSON 文件中创建一个数据数组 然后可以使用该数组填充应用程序中其他地方提交的结果的 列表 表单本身工作正常 但每
  • 如何在android中安排一些代码执行或者:android中的守护线程到底是什么?

    我目前正在开发一个适用于 Android 操作系统的应用程序 它需要不时从远程服务器获取数据 由于即使实际的前端应用程序未运行 也应该执行此 更新 因此我实现了一个在系统启动时启动的远程服务 现在我需要安排一个计时器来开始更新 Timer
  • django 在 modelform 中使用模型选择

    我想知道应该如何在模型表单中使用模型选择选项 示例 型号 class NPCGuild models Model CATEGORIES COM Combat CRA Crafting WAR Warfare faction models F
  • ZLib解压

    我正在尝试使用 zlib net 库压缩数据 无论未压缩字符串的内容如何 我似乎只在 raw 中获得两个字节的数据 string uncompressed 1234567890 byte data UTF8Encoding Default
  • 如何将android芯片对齐到芯片组的末尾?

    您好 我有一个芯片组 我动态创建芯片并添加到芯片组 However 我希望芯片位于芯片组的右端 但它始终位于左侧 如此处所示 我希望芯片 Text 0 和 Text 1 位于最右端 这是我的代码
  • 端口号未隐藏在 nginx 反向代理(下一个 js 服务器)中

    我正在尝试通过 create next app 部署 next js 应用程序 我有一个像这样的自定义 Express 服务器 const express require express const next require next co