前端项目配置 Nginx 全攻略

        在前端开发中,项目开发完成后,如何高效、稳定地将其部署到生产环境是至关重要的一步。Nginx 作为一款轻量级、高性能的 Web 服务器和反向代理服务器,凭借其出色的性能和丰富的功能,成为了前端项目部署的首选方案。本文将详细介绍在 Nginx 已安装好的基础上,如何进行前端项目的配置,让你的前端项目顺利上线。

一、Nginx 基础认知

1.1 工作原理

Nginx 采用事件驱动的异步非阻塞处理方式,在处理大量并发连接时表现出色。它通过多个工作进程监听客户端请求,每个工作进程可以处理多个连接,避免了传统服务器在高并发场景下的性能瓶颈。

1.2 核心配置文件

Nginx 的核心配置文件存放位置会因安装方式和操作系统的不同而有所变化,当然也可以在定义安装路径。我的核心配置文件位于 /usr/local/nginx/conf/nginx.conf 。同时,为了方便管理不同的项目,我们可以在 /usr/local/nginx/conf 目录下创建一个 conf.d 子目录,用于存放各个项目的独立配置文件。

二、前端静态资源部署

2.1 准备前端项目

那目前已完成了前端项目的开发,并使用构建工具Webpack进行了打包,生成了包含 HTML、CSS、JavaScript、图片等的静态文件。将这些打包后的文件存放在一个指定的目录下,例如 /var/www/my-frontend-project 。

其中如果本地机器和服务器之间能够通过 SSH 正常通信,把文件上传到服务器可以通过scp命令

scp -r /home/user/my-frontend-project username@server_ip:/var/www/
  • username :你在服务器上的登录用户名。
  • server_ip :服务器的 IP 地址。

2.2 配置 Nginx

2.2.1 创建项目配置目录

首先,在 /usr/local/nginx/conf 目录下创建 conf.d 目录(如果该目录不存在):

mkdir -p /usr/local/nginx/conf/conf.d
2.2.2 创建项目配置文件

在 conf.d 目录下创建一个新的配置文件,例如 my-frontend-project.conf ,并添加以下内容:

server {listen 80;server_name your_domain_or_ip;root /var/www/my-frontend-project;index index.html index.htm;location / {try_files $uri $uri/ /index.html;}
}
  • listen 80:指定 Nginx 监听的端口号为 80,这是 HTTP 协议的默认端口。
  • server_name your_domain_or_ip:填写服务器的域名或 IP 地址,以便客户端能够通过该地址访问项目。
  • root /var/www/my-frontend-project:指定前端项目的根目录,Nginx 将从该目录中查找并返回静态文件。
  • index index.html index.htm:设置默认的索引文件,当客户端访问根目录时,Nginx 会优先返回 index.html 或 index.htm 文件。
  • location /:配置根路径的请求处理规则,try_files $uri $uri/ /index.html 表示当请求的文件不存在时,返回 index.html 文件,这对于单页面应用(SPA)非常重要。

注意:使用80端口之前通过“netstat -ntulp | grep 80”命令确认80端口是否被占用, 如果被占用可以换一个端口,避免影响其他业务。

2.2.3 引入项目配置文件

在 /usr/local/nginx/conf/nginx.conf 文件中添加以下语句,以确保 conf.d 目录下的配置文件被加载:

include /usr/local/nginx/conf/conf.d/*.conf;

2.3 检查配置并重启 Nginx

在修改完配置文件后,需要检查配置文件是否存在语法错误:

/usr/local/nginx/sbin/nginx -t

 如果检查通过,重启 Nginx 服务使配置生效:

/usr/local/nginx/sbin/nginx -s reload

2.4 验证部署

在浏览器中输入服务器的域名或 IP 地址,如果能够看到前端项目的页面,说明部署成功。

三、静态资源缓存配置

为了提高前端项目的性能,减少服务器的负载,可以对静态资源进行缓存配置。在 my-frontend-project.conf 文件中添加以下内容:

location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {expires 30d;add_header Cache-Control "public, no-transform";
}
  • location ~* \.(css|js|png|jpg|jpeg|gif|ico)$:匹配 CSS、JavaScript、图片等静态资源文件。
  • expires 30d:设置静态资源的缓存时间为 30 天,客户端在 30 天内再次请求该资源时,将直接使用本地缓存。
  • add_header Cache-Control "public, no-transform":添加 Cache-Control 头信息,允许公共缓存,不进行转换。

四、反向代理配置

如果前端项目需要与后端 API 进行交互,可以使用 Nginx 进行反向代理配置。在 my-frontend-project.conf 文件中添加以下内容:

四、反向代理配置

如果前端项目需要与后端 API 进行交互,可以使用 Nginx 进行反向代理配置。在 my-frontend-project.conf 文件中添加以下内容:

location /api/ {proxy_pass http://backend_server_ip:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
  • location /api/:匹配以 /api/ 开头的请求。
  • proxy_pass http://backend_server_ip:port/:将请求转发到后端服务器的指定地址和端口。
  • proxy_set_header:设置请求头信息,将客户端的真实 IP 地址传递给后端服务器。

完整的  my-frontend-project.conf 文件

server {listen 80;server_name your_domain;# 前端项目根目录root /var/www/my-frontend-project;# 默认索引文件index index.html index.htm;# 静态资源缓存配置location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {# 缓存 30 天expires 30d;add_header Cache-Control "public, no-transform";}# 前端项目根路径配置location / {try_files $uri $uri/ /index.html;}# 反向代理配置,将 /api/ 开头的请求转发到后端服务器location /api/ {proxy_pass http://backend_server_ip:port/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

请根据实际情况修改上述配置文件中的域名、前端项目路径、后端 API 地址等信息。修改配置文件后,使用 sudo /usr/local/nginx/sbin/nginx -t 检查配置语法,确认无误后使用 sudo /usr/local/nginx/sbin/nginx -s reload 重新加载配置。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全学习-常见web漏洞的渗xxx透以及防护方法

渗XX透测试 弱口令漏洞 漏洞描述 目标网站管理入口(或数据库等组件的外部连接)使用了容易被猜测的简单字符口令、或者是默认系统账号口令。 渗XX透测试 如果不存在验证码,则直接使用相对应的弱口令字典使用burpsuite 进行爆破如果存在验证…

网络安全 机器学习算法 计算机网络安全机制

(一)网络操作系统 安全 网络操作系统安全是整个网络系统安全的基础。操作系统安全机制主要包括访问控制和隔离控制。 访问控制系统一般包括主体、客体和安全访问政策 访问控制类型: 自主访问控制强制访问控制 访问控制措施: 入…

2025网络安全等级测评报告,信息安全风险评估报告(Word模板)

一、概述 1.1工作方法 1.2评估依据 1.3评估范围 1.4评估方法 1.5基本信息 二、资产分析 2.1 信息资产识别概述 2.2 信息资产识别 三、评估说明 3.1无线网络安全检查项目评估 3.2无线网络与系统安全评估 3.3 ip管理与补丁管理 3.4防火墙 四、威胁细类分析 4.1威胁…

Ubuntu22.04系统安装Anaconda、CUDA和CUDNN

之前一直在Windows系统下使用Anaconda和CUDA加速,最近需要复现一个算法,文档里面有Linux系统conda构建环境的教程。 本篇博文参考博文,记录自己安装的过程,便于以后需要。 目录 1.Anaconda1.1 安装包下载1.2 安装软件1.3 更新cond…

微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型

一、注册火山引擎账号,创建API Key和model(接入点ID) 1.注册并登陆火山引擎账号,网址为:https://console.volcengine.com/ 2.根据登陆后的页面提示进行实名认证,实名认证后才能创建API Keyt和创建接入点。…

蓝桥杯之日期题

文章目录 1.蓝桥杯必备知识点2. 题型13.需求2 1.蓝桥杯必备知识点 蓝桥杯是一个面向全国高校计算机相关专业学生的学科竞赛,涵盖多个赛道,常见的有软件类(如 C/C 程序设计、Java 软件开发、Python 程序设计)和电子类(…

muduo网络库2

Muduo网络库:底层实质上为Linux的epoll pthread线程池,且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环,有一个main Reactor负载accept连接,然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor)&…

WinSCP 连接到 Ubuntu 虚拟机

要使用 WinSCP 连接到 Ubuntu 虚拟机,一般采用 SFTP 或 SCP 协议进行文件传输。以下是详细步骤: 1. 确保虚拟机网络可访问 首先,你的 Ubuntu 虚拟机需要允许外部访问: 如果使用 NAT 网络:需要设置端口转发&#xff0…

redis小记

redis小记 下载redis sudo apt-get install redis-server redis基本命令 ubuntu16下的redis没有protected-mode属性,就算sudo启动,也不能往/var/spool/cron/crontabs写计划任务,感觉很安全 #连接到redis redis-cli -h 127.0.0.1 -p 6379 …

Docker核心概念

容器介绍 Docker 是世界领先的软件容器平台,所以想要搞懂 Docker 的概念我们必须先从容器开始说起。 什么是容器? 先来看看容器较为官方的解释 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量…

阿里云可观测全面拥抱 OpenTelemetry 社区

作者:古琦 在云计算、微服务、容器化等技术重塑 IT 架构的今天,系统复杂度呈指数级增长。在此背景下,开源可观测性技术已从辅助工具演变为现代 IT 系统的"数字神经系统",为企业提供故障预警、性能优化和成本治理的全方…

2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命

引言 2025年的科技领域持续呈现爆发式增长,AI大模型竞争白热化、量子计算商业化加速、开源工具生态繁荣成为本月最受关注的议题。本文结合最新行业动态,从技术突破、商业布局到开发者生态,全面解析当前科技热点,为读者提供深度洞…

idea创建第一个springboot程序

说明: 我计划用idea,创建第一个springboot程序,但是作为新手完全不会弄,今天我就亲自尝试一边,并且出一期详细,完美的教程,亲测可以运行 step1. 点击file , 选new, 选…

半导体芯片制造中 W CVD(钨化学气相沉积)

半导体芯片制造中 W CVD(钨化学气相沉积) 的 Nucleation 解析 在钨(W)化学气相沉积(CVD)工艺中,Nucleation(成核) 是沉积过程的初始阶段,指钨原子或分子在基…

Three.js 入门(辅助、位移、父子关系、缩放旋转、响应式布局)

本篇主要学习内容 : 三维坐标系与辅助坐标系物体位移与父子元素物体的缩放与物体的旋转设置响应式画布与全屏控制 点赞 关注 收藏 学会了 本文使用 Three.js 的版本:171 基于 Vue3vite开发调试 1.三维坐标系与辅助坐标系 1.1) 导入three和轨道控制器 // 导入…

一键导出数据库表到Excel

工作中,我们经常需要将数据库表导出到Excel,通常我们会用数据库编辑器之类的工具提供的导出功能来导出,但是它们的导出功能通常都比较简单。 这篇文章将介绍一种简单易用并且功能强大的导出方法。 新增导出 打开的卢导表工具,新…

CSS滚动条原理与自定义样式指南,CSS滚动条样式失效,滚动条样式无效,-webkit-scrollbar无效,overflow不显示滚动条

滚动内容形成的必要条件 CSS Overflow属性解析 MDN官方文档-Overflow属性 菜鸟教程-Overflow属性 overflow 属性控制内容溢出元素框时在对应的元素区间内是否添加滚动条。 值描述visible默认值。内容不会被修剪,会呈现在元素框之外。hidden内容会被修剪&#xf…

【LLM】本地部署LLM大语言模型+可视化交互聊天,附常见本地部署硬件要求(以Ollama+OpenWebUI部署DeepSeekR1为例)

【LLM】本地部署LLM大语言模型可视化交互聊天,附常见本地部署硬件要求(以OllamaOpenWebUI部署DeepSeekR1为例) 文章目录 1、本地部署LLM(以Ollama为例)2、本地LLM交互界面(以OpenWebUI为例)3、本…

温湿度监控设备融入智慧物联网

当医院的温湿度监控设备融入智慧物联网,将会带来许多新的体验,可以帮助医院温湿度监控设备智能化管理,实现设备之间的互联互通,方便医院对温湿度数据进行统一管理和分析。 添加智慧物联网技术,实现对医院温湿度的实时…

在ubuntu如何安装samba软件?

我们在开发过程中,经常修改代码,可以安装samba文件来实现,把ubuntu的存储空间指定为我们win上的一个磁盘,然后我们在或者磁盘里面创建.c文件,进行代码修改和编写。samba能将linux的文件目录直接映射到windows&#xff…