一、准备环境
- 安装Node.js:
- 确保在服务器上安装了Node.js。你可以从Node.js官方网站(https://nodejs.org)下载并安装适合服务器操作系统的最新版本。
- 安装Nest.JS CLI:
- 通过npm全局安装Nest.JS CLI,以便能够创建和管理Nest.JS项目。
npm install -g @nestjs/cli
- 通过npm全局安装Nest.JS CLI,以便能够创建和管理Nest.JS项目。
二、创建和配置Nest.JS应用
- 创建Nest.JS项目:
- 使用Nest.JS CLI创建一个新的Nest.JS项目。
nest new my-nest-app
- 使用Nest.JS CLI创建一个新的Nest.JS项目。
- 开发并测试应用:
- 在本地开发环境中开发和测试Nest.JS应用,确保其正常运行并满足需求。
nest build
- 运行正式环境(生产环境 production)
nest start --watch
使用
nest start
运行的程序,可以ctrl + c
停止。run起来后,编译后的文件在
dist
目录里。
- 在本地开发环境中开发和测试Nest.JS应用,确保其正常运行并满足需求。
三、配置Apache服务器
- 安装Apache:
- 确保在服务器上安装了Apache服务器。这可以通过服务器的包管理器(如apt、yum等)来完成。
- 配置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>
- 修改Apache的配置文件(通常是