Ubuntu 20.04 LTS 中部署 網頁 + Node.js 應用 + Nginx 跨域配置 的詳細步驟

Ubuntu 20.04 LTS 中部署 網頁 + Node.js 應用 + Nginx 跨域配置 的詳細步驟

  • 一、準備工作
    • 1、連接服務器
    • 2、更新系統
  • 二、安裝 Node.js 環境
    • 1、安裝 Node.js 官方 PPA(用于獲取最新穩定版):
    • 2、安裝 Node.js 和 npm(LTS 長期支持版本):
    • 3、驗證安裝:
  • 三、部署 Node.js 應用
    • 1. 準備應用代碼
      • 創建項目目錄(如 /var/www/node-app):
      • 將本地代碼上傳至服務器(可通過 scp 或 FTP 工具):
    • 2. 安裝依賴并啟動應用
      • 進入項目目錄,安裝依賴:
      • 安裝 pm2 守護進程管理器:
      • 生產環境啟動(推薦使用pm2進程管理工具)
  • 四、安裝并配置 Nginx
    • 1. 安裝 Nginx
    • 2. 配置 Nginx 代理 Node.js 應用
      • 創建 Nginx 配置文件(替換默認站點):
      • 寫入以下內容(根據實際情況修改端口、路徑等參數):
    • 3. 啟用配置并測試
      • 激活站點配置:
      • 檢查 Nginx 配置語法是否正確:
      • 重啟 Nginx 使配置生效:
  • 五、跨域配置驗證
  • 六、補充優化(可選)
    • 1、HTTPS 配置(推薦)
    • 2、防火墻設置
    • 3、日志管理
  • 最后:總結流程
    • 環境安裝:Node.js + Nginx
    • 應用部署:上傳代碼 + 啟動服務(推薦用 pm2)
    • Nginx 代理:配置反向代理和跨域響應頭
    • 安全優化:HTTPS + 防火墻
    • 調試驗證:檢查服務狀態和跨域請求是否正常

一、準備工作

1、連接服務器

通過 SSH 工具(如 Putty、Xshell 或終端命令)連接到 Ubuntu 服務器:

ssh username@服務器IP地址

2、更新系統

確保系統軟件包為最新版本:

sudo apt update && sudo apt upgrade -y

二、安裝 Node.js 環境

1、安裝 Node.js 官方 PPA(用于獲取最新穩定版):

curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

2、安裝 Node.js 和 npm(LTS 長期支持版本):

sudo apt install -y nodejs

3、驗證安裝:

node -v    # 查看 Node.js 版本(如 v16.xx.x)
npm -v     # 查看 npm 版本

三、部署 Node.js 應用

1. 準備應用代碼

創建項目目錄(如 /var/www/node-app):

sudo mkdir -p /var/www/node-app
sudo chown -R $USER:$USER /var/www/node-app  # 賦予當前用戶權限

將本地代碼上傳至服務器(可通過 scp 或 FTP 工具):

scp -r 本地項目路徑 username@服務器IP:/var/www/node-app

2. 安裝依賴并啟動應用

進入項目目錄,安裝依賴:

cd /var/www/node-app
npm install

開發環境啟動(用于調試):

node app.js  # 假設入口文件為 app.js,端口默認 3000

安裝 pm2 守護進程管理器:

npm install pm2 -g

生產環境啟動(推薦使用pm2進程管理工具)

pm2 start app.js --name "node-app"  # 啟動應用并命名
pm2 save  # 保存進程列表,避免服務器重啟后應用停止

四、安裝并配置 Nginx

1. 安裝 Nginx

sudo apt install -y nginx
sudo systemctl start nginx  # 啟動 Nginx
sudo systemctl enable nginx  # 設置開機自啟

此時訪問服務器 IP 應看到 Nginx 默認歡迎頁面。

2. 配置 Nginx 代理 Node.js 應用

創建 Nginx 配置文件(替換默認站點):

sudo nano /etc/nginx/sites-available/node-app

寫入以下內容(根據實際情況修改端口、路徑等參數):

server {listen 80;server_name your-domain.com;  # 替換為你的域名或服務器 IP# 靜態資源代理(如 HTML、CSS、JS)location / {root /var/www/node-app/public;  # 網頁靜態資源目錄index index.html index.htm;try_files $uri $uri/ =404;}# Node.js 應用代理(假設 Node.js 運行在 3000 端口)location /api/ {  # 代理路徑可自定義,如 /api/proxy_pass http://localhost:3000/;  # 指向 Node.js 應用地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 跨域資源共享(CORS)配置location / {if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';# 允許自定義請求頭(如 Authorization)add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain; charset=utf-8';add_header 'Content-Length' 0;return 204;}if ($request_method = 'POST') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';}if ($request_method = 'GET') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';}}
}

3. 啟用配置并測試

激活站點配置:

sudo ln -s /etc/nginx/sites-available/node-app /etc/nginx/sites-enabled/

檢查 Nginx 配置語法是否正確:

sudo nginx -t

重啟 Nginx 使配置生效:

sudo systemctl restart nginx

五、跨域配置驗證

前端請求示例(以 JavaScript 為例)
在前端代碼中發送跨域請求時,Nginx 會自動添加響應頭:

fetch('http://your-domain.com/api/data', {method: 'GET',headers: {'Content-Type': 'application/json','Authorization': 'Bearer your-token'  // 若有自定義頭需與 Nginx 配置一致}
})
.then(response => response.json())
.then(data => console.log(data));

測試跨域是否生效
使用瀏覽器開發者工具(F12)查看響應頭,確保包含:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: ...

若出現跨域錯誤,檢查 Nginx 配置中的路徑、端口是否與 Node.js 應用匹配,以及防火墻是否放行端口(如 Ubuntu 的 UFW 需開放 80/443 端口)。

六、補充優化(可選)

1、HTTPS 配置(推薦)

使用 Certbot 生成免費 SSL 證書:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com  # 按提示完成配置

2、防火墻設置

sudo ufw allow 'Nginx Full'  # 允許 HTTP/HTTPS 流量
sudo ufw allow ssh  # 保留 SSH 訪問
sudo ufw enable  # 啟用防火墻

3、日志管理

Nginx 日志路徑:
訪問日志:/var/log/nginx/access.log
錯誤日志:/var/log/nginx/error.log
可通過 tail -f 命令實時查看日志調試問題。

最后:總結流程

環境安裝:Node.js + Nginx

應用部署:上傳代碼 + 啟動服務(推薦用 pm2)

Nginx 代理:配置反向代理和跨域響應頭

安全優化:HTTPS + 防火墻

調試驗證:檢查服務狀態和跨域請求是否正常

通過以上步驟,即可在 Ubuntu 20.04 中完成網頁、Node.js 應用和 Nginx 跨域配置的部署

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83670.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3DVR制作的工具或平臺

3DVR(三維虛擬現實)是利用三維圖像技術和虛擬現實技術,將真實場景進行三維掃描并轉換成計算機可識別的三維模型,使用戶能夠在虛擬空間中自由漫游,體驗身臨其境的感覺。3DVR技術結合了全景拍攝和虛擬現實,提…

垂直智能體:企業AI落地的正確打開方式

在當前AI浪潮中,許多企業急于跟進,推出自己的AI智能體解決方案。然而,市場上大量出現的"萬能型"智能體卻鮮有真正解決實際問題的產品。本文將探討為何企業應該專注于開發垂直領域智能體,而非追求表面上的全能&#xff0…

軟件工程各種圖總結

目錄 1.數據流圖 2.N-S盒圖 3.程序流程圖 4.UML圖 UML用例圖 UML狀態圖 UML時序圖 5.E-R圖 首先要先了解整個軟件生命周期: 通常包含以下五個階段:需求分析-》設計-》編碼 -》測試-》運行和維護。 軟件工程中應用到的圖全部有:系統…

王者榮耀游戲測試場景題

如何測試一個新英雄:方法論與實踐維度 測試一個新英雄不僅僅是“打打打”,而是一套完整的測試流程,包括設計文檔驗證、功能驗證、數值驗證、性能驗證、交互驗證等。可以從以下多個角度展開: 🔍 1. 方法論維度 ? 測試…

第四天的嘗試

目錄 一、每日一言 二、練習題 三、效果展示 四、下次題目 五、總結 一、每日一言 很抱歉的說一下,我昨天看白色巨塔電視劇,看的入迷了,同時也看出一些道理,學到東西; 但是把昨天的寫事情給忘記了,今天…

多模態大語言模型arxiv論文略讀(七十八)

AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ?? 論文標題:AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ?? 論文作者:Zhen Xing, Qi Dai, Zejia Weng, Zuxuan W…

優化 Spring Boot 應用啟動性能的實踐指南

1. 引言 Spring Boot 以其“開箱即用”的特性深受開發者喜愛,但隨著項目復雜度的增加,應用的啟動時間也可能會變得較長。對于云原生、Serverless 等場景而言,快速啟動是一個非常關鍵的指標。 2. 分析啟動過程 2.1 啟動階段概述 Spring Boot 的啟動流程主要包括以下幾個階…

Ubuntu下配置VScode出現#include錯誤請更新includePath的解決方法

首先Ubuntu新手小白一定要先安裝g,安裝方法是: 在桌面右鍵打開終端,輸入:sudo apt-get install g 安裝好g之后,在vscode終端輸入:g -v -E -x c - 輸出這些路徑,復制 如果還存在顯示cout不存在的…

【背包dp】小結

背包問題總結 一、什么是背包問題? 定義:給定一個容量為 W 的背包和 n 件物品,每件物品有一個重量 w[i] 和價值 v[i],要求選擇若干物品放入背包,在不超過容量的前提下,使總價值最大。 背包問題本質是&am…

濟南國網數字化培訓班學習筆記-第三組-1-電力通信傳輸網認知

電力通信傳輸網認知 電力通信基本情況 傳輸介質 傳輸介質類型(導引與非導引) 導引傳輸介質,如電纜、光纖; 非導引傳輸介質,如無線電波; 傳輸介質的選擇影響信號傳輸質量 信號傳輸模式(單工…

代碼隨想錄算法訓練營第六十四天| 圖論9—卡碼網47. 參加科學大會,94. 城市間貨物運輸 I

每日被新算法方式轟炸的一天,今天是dijkstra(堆優化版)以及Bellman_ford ,嘗試理解中,屬于是只能照著代碼大概說一下在干嘛。 47. 參加科學大會 https://kamacoder.com/problempage.php?pid1047 dijkstra&#xff08…

upload-labs通關筆記-第8關 文件上傳之點繞過

目錄 一、點繞過原理 二、deldot()函數 三、源碼分析 四、滲透實戰 1、構建腳本test8.php 2、打開靶場 3、bp開啟攔截 4、點擊上傳 5、bp攔截 6、后綴名增加點 7、發包并獲取腳本地址 8、訪問腳本 本文通過《upload-labs靶場通關筆記系列》來進行upload-labs靶場的滲…

Spring Web MVC————入門(3)

今天我們來一個大練習,我們要實現一個登錄界面,登錄進去了先獲取到登錄人信息,可以選擇計算器和留言板兩個功能,另外我們是學后端的,對于前端我們會些基礎的就行了,知道ajax怎么用,知道怎么關聯…

PhpStudy | PhpStudy 工具安裝 —— Windows 系統安裝 PhpStudy

🌟想了解這個工具的其它相關筆記?看看這個:[網安工具] 服務器環境配置工具 —— PhpStudy 使用手冊 筆者備注:Windows 中安裝 PhpStudy 屬于傻瓜式安裝,本文只是為了體系完善而發。 在前面的章節中,筆者簡…

K230 ISP:一種新的白平衡標定方法

第一次遇見需要利用光譜響應曲線進行白平衡標定的方法。很好奇是如何利用光譜響應曲線進行白平衡標定的。 參考資料參考:K230 ISP圖像調優指南 K230 介紹 嘉楠科技 Kendryte 系列 AIoT 芯片中的最新一代 AIoT SoC K230 芯片采用全新的多核異構單元加速計算架構&a…

通俗解釋Transformer在處理序列問題高效的原因(個人理解)

Transformer出現的背景 CNN 的全局關聯缺陷卷積神經網絡(CNN)通過多層堆疊擴大感受野,但在自然語言處理中存在本質局限: 局部操作的語義割裂:每個卷積核僅處理固定窗口(如 3-5 詞),…

Java 多線程基礎:Thread 類核心用法詳解

一、線程創建 1. 繼承 Thread 類(傳統寫法) class MyThread extends Thread { Override public void run() { System.out.println("線程執行"); } } // 使用示例 MyThread t new MyThread(); t.start(); 缺點:Java 單…

Django 中時區的理解

背景 設置時區為北京時間 TIME_ZONE ‘Asia/Shanghai’ # 啟用時區支持 USE_TZ True 這樣設置的作用 前端 (實際上前端el-date-picker 顯示的是當地時區的時間) Element組件轉換后,我們是東八區,前端傳給后端的時間為&…

C# 深入理解類(成員常量)

成員常量 成員常量類似前一章所述的局部常量,只是它們被聲明在類聲明中而不是方法內,如下面的 示例: 與局部常量類似,用于初始化成員肯量的值在編譯時必須是可計算的,而且通常是一個預定 義簡單類型或由它們組成的表達…

【深度學習】#12 計算機視覺

主要參考學習資料: 《動手學深度學習》阿斯頓張 等 著 【動手學深度學習 PyTorch版】嗶哩嗶哩跟李沐學AI 目錄 目標檢測錨框交并比(IoU)錨框標注真實邊界框分配偏移量計算損失函數 非極大值抑制預測 多尺度目標檢測單發多框檢測(S…