前端項目配置 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.pswp.cn/diannao/70816.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70816.shtml
英文地址,請注明出處:http://en.pswp.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…