惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
爱范儿
爱范儿
小众软件
小众软件
K
Kaspersky official blog
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
C
Check Point Blog
S
Schneier on Security
P
Palo Alto Networks Blog
IT之家
IT之家
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Project Zero
Project Zero
Y
Y Combinator Blog
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
S
Securelist
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理

博客园 - sekihin

【SQLSERVER】备份还原除当前数据库~之外的其他数据库的bak备份 【前端】常用VsCode插件 React席哪个能优化 20 GitHub 仓库帮助你成为 React专家 Export a named export for each HTTP method instead.(Next.js 15) Error occurred prerendering page "/_not-found".(Next.js 15) Error: Attempted to call generateViewport() from the server (Next.js 15) [cause]: TypeError: e_.createContext is not a function (Next.js 15) Cursor - AI代码编辑器的使用指南 Next.js项目中.prettierrc.json的配置 Next.js项目中.eslintrc.js的配置 nvm: Node Version Manager PHP slim 部署Apache NestJS导出API文档 ChatGPT plugins Obisidian plugins Build nest.js by tsconfig.json Data Transfer Objects (DTOs) in NestJS TypeError: stringWidth is not a function
NestJS 部署Apache
sekihin · 2024-12-14 · via 博客园 - sekihin

要将Nest.JS应用搭建在Apache服务器上,你需要了解Nest.JS是一个基于Node.js的框架,因此它本质上是一个后端服务,而Apache通常用作前端服务器或反向代理。以下是将Nest.JS应用与Apache服务器结合使用的步骤:

一、准备环境

  1. 安装Node.js:
    • 确保在服务器上安装了Node.js。你可以从Node.js官方网站(https://nodejs.org)下载并安装适合服务器操作系统的最新版本。
  2. 安装Nest.JS CLI:
    • 通过npm全局安装Nest.JS CLI,以便能够创建和管理Nest.JS项目。
      npm install -g @nestjs/cli

二、创建和配置Nest.JS应用

  1. 创建Nest.JS项目:
    • 使用Nest.JS CLI创建一个新的Nest.JS项目。
  2. 开发并测试应用:
    • 在本地开发环境中开发和测试Nest.JS应用,确保其正常运行并满足需求。
    • 运行正式环境(生产环境 production)

      使用nest start运行的程序,可以ctrl + c停止。

       run起来后,编译后的文件在dist目录里。

三、配置Apache服务器

  1. 安装Apache:
    • 确保在服务器上安装了Apache服务器。这可以通过服务器的包管理器(如apt、yum等)来完成。
  2. 配置Apache作为反向代理:
    • 修改Apache的配置文件(通常是httpd.conf或位于sites-available目录下的某个文件),以添加对Nest.JS应用的反向代理支持。
    • 以下是一个示例配置,假设Nest.JS应用在服务器上的3000端口运行:
      <VirtualHost *:80>
          <!-- 指定此虚拟主机监听的IP地址和端口。'*' 表示监听所有IP地址,80 是HTTP的默认端口。 -->
          ServerName www.example.com
          <!-- 设置服务器的域名,这是当请求到达时,Apache将识别的域名。 -->
      
          ServerAdmin contact@example.com
          <!-- 设置服务器的管理员联系邮箱,这通常用于发送错误报告等。 -->
      
          ProxyPreserveHost On
          <!-- 启用此选项后,Apache在向后端服务器转发请求时,会保留原始请求中的Host头部信息。
               这对于需要知道原始请求域名的后端服务(如Nest.JS应用)很重要。 -->
      
          ProxyRequests Off
          <!-- 禁用正向代理功能。Apache默认不启用正向代理,但明确关闭它可以防止潜在的安全风险。
               注意:这与反向代理不同,反向代理是代理对外部请求的响应,而不是代理外部请求到内部服务器。 -->
      
          ProxyPass / http://localhost:3000/
          <!-- 将所有对Apache服务器的根路径(/)的请求转发到后端的Nest.JS应用(运行在localhost的3000端口)。
               这意味着当用户访问 http://www.example.com/ 时,他们实际上是在访问运行在 http://localhost:3000/ 的Nest.JS应用。 -->
      
          ProxyPassReverse / http://localhost:3000/
          <!-- 修改Apache服务器响应中的Location, Refresh和Content-Location头部字段,以匹配ProxyPass指令。
               这对于处理重定向和确保链接正确指向后端服务很重要。 -->
      
          <!-- 下面的<Directory>块定义了对特定目录的访问控制,但在这个上下文中可能并不完全适用,
               因为ProxyPass已经接管了对根路径的处理。这个<Directory>块可能是为了其他目的而保留的,
               或者如果Nest.JS应用需要静态文件服务,则可能是为了配置这些文件的访问权限。
               然而,对于Nest.JS应用来说,静态文件通常是通过Nest自身的服务来提供的,
               或者通过Nginx/Apache等服务器作为独立的静态文件服务器来提供。 -->
          <Directory "var/www/my-nest-app/dist">
              Options FollowSymLinks
              <!-- 允许Apache在该目录中跟随符号链接(symlinks)。 -->
      
              AllowOverride All
              <!-- 允许在.htaccess文件中覆盖Apache的默认配置。这通常用于允许用户自定义设置,
                   但出于安全考虑,在生产环境中可能会限制或禁用此功能。 -->
      
              Require all granted
              <!-- 允许所有请求访问此目录。在较新的Apache版本中,这通常用于替换Order和Allow/Deny指令。 -->
          </Directory>         
      </VirtualHost>