NGINX反向代理golang后端服務

nginx配置參考(/etc/nginx/sites-available路徑下創建配置文件)

server {listen 80;  # 監聽80端口server_name ip;  # 你的域名或IPlocation / {root /var/www/test_page/;index index.html;      # 默認文件try_files $uri $uri/ /index.html;  # 單頁應用的路由支持}# 后端接口代理location /api/ {proxy_pass http://127.0.0.1:8080;  # 注意8080后不要加斜杠/proxy_http_version 1.1;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;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE";add_header Access-Control-Allow-Headers "Content-Type, Authorization";if ($request_method = 'OPTIONS') {add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE";add_header Access-Control-Allow-Headers "Content-Type, Authorization";return 204;}}}

特別注意:proxy_pass的url后邊 帶"/"會把 /system 給替換掉,也就是實際會直接訪問http://127.0.0.1:8080/后的接口,而不是http://127.0.0.1:8080/system后的接口

golang后端代碼示例

package mainimport ("encoding/json""log""net/http"
)type Response struct {Message string `json:"message"`
}func main() {// 創建一個路由處理器router := http.NewServeMux()router.HandleFunc("/api/hello", func(w http.ResponseWriter, r *http.Request) {w.Header().Set("Content-Type", "application/json")response := Response{Message: "Hello from Golang backend!"}json.NewEncoder(w).Encode(response)})// 直接使用路由處理器啟動服務器log.Println("Starting server on :8080")if err := http.ListenAndServe(":8080", router); err != nil {log.Fatalf("Failed to start server: %v", err)}
}

前端代碼示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Frontend Demo</title>
</head>
<body><h1>Frontend Demo</h1><button id="fetchButton">Fetch Message from Backend</button><p id="message"></p><script>document.getElementById('fetchButton').addEventListener('click', function() {fetch('/api/hello')  // 調用后端接口.then(response => {if (!response.ok) {throw new Error('Network response was not ok ' + response.statusText);}return response.json();  // 解析 JSON 響應}).then(data => {document.getElementById('message').innerText = data.message;  // 顯示消息}).catch(error => {console.error('Error:', error);document.getElementById('message').innerText = 'Failed to fetch message: ' + error.message;});});</script>
</body>
</html>

測試

點擊按鈕出現Hello from Golang backend!表示代理成功
在這里插入圖片描述

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

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

相關文章

【秋招筆試】2025.08.03蝦皮秋招筆試-第二題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍在線刷題 bishipass.com 02. 城市規劃的連通網絡 問題描述 A先生是一名城市規劃師,他負責設計一個智能城市的通信網絡。城市被劃分為一個 n m n \times m n

JVM 01 運行區域

Java 虛擬機 跨平臺 虛擬機隱藏平臺差異&#xff0c;解決不同平臺代碼運行結果不一致問題&#xff0c;實現Write Once, Run Anywhere&#xff0c;實現用戶代碼跨平臺。它本身是一個操作系統上的應用程序&#xff0c;將字節碼文件翻譯成特定機器的機器碼。 Java 虛擬機 運行時內…

[學習筆記-AI基礎篇]03_Transfommer與GPT架構學習

介紹GPT-1,GPT-2,GPT-3,GPT-4 GPT-1 介紹2018年6月,OpenAI公司發表了論文"|mproving Language Understanding by Generative Pre-training”《用生成式預訓練提高模型的語言理解力》,推出了具有1.17億個參數的GPT-1(Generative Pre-trainingTransformers,生成式預訓練變換…

HPNetworkCheckControl.dll HPEnvRes.dll hpcasl.dll HpBwcDecode.dll HpBlogic.dll hpbhilxres.dll

在使用電腦系統時經常會出現丟失找不到某些文件的情況&#xff0c;由于很多常用軟件都是采用 Microsoft Visual Studio 編寫的&#xff0c;所以這類軟件的運行需要依賴微軟Visual C運行庫&#xff0c;比如像 QQ、迅雷、Adobe 軟件等等&#xff0c;如果沒有安裝VC運行庫或者安裝…

飛算 JavaAI:給需求分析裝上 “智能大腦“

在軟件開發的漫長旅途中&#xff0c;需求分析是至關重要的起點&#xff0c;其精準度與效率直接關乎整個項目的成敗。傳統的需求分析依賴人工梳理&#xff0c;不僅耗費大量時間與精力&#xff0c;還時常出現理解偏差和邏輯漏洞。而飛算 JavaAI 的橫空出世&#xff0c;猶如為需求…

javacc學習筆記 01、JavaCC本地安裝與測試

文章目錄前言本章節源碼一、什么是javacc二、Mac環境安裝javacc三、javacc測試案例1、編寫詞法描述文件2、借助javacc命令來處理demo01.jj文件3、idea配置輸入參數&#xff0c;運行Adder類方法四、javacc文件編譯類描述4.1、demo1.jj文件生成內容描述&解析轉換過程4.2、解析…

Java基礎-stream流的使用

目錄 案例要求&#xff1a; 實現思路&#xff1a; 代碼&#xff1a; 總結&#xff1a; 案例要求&#xff1a; 實現思路&#xff1a; 創建一個包含學生姓名(String)和選擇地址變量(集合)的實體類,然后將題干數據封裝到集合,然后進行stream操作 代碼&#xff1a; import ja…

virtualbox+UBuntu20.04+內存磁盤擴容

寫在前面&#xff1a;1.由于我寫博客都是偏向個人筆記性質的&#xff0c;所以寫的比較粗糙&#xff0c;如果有疑問私信評論我即可。2.這篇博客的解決方法應該算是“全網”首發吧&#xff0c;因為我為了磁盤擴容真的找了好多相關資料&#xff0c;但是基本都沒有用。如果你也是找…

關于對Spring的理解,以及對spring中的兩大核心概念AOP和IOC的理解

我們先來說一說Spring&#xff0c;從總體上Spring就是一個基礎框架&#xff0c;同時Spring給我們提供了一個Bean容器&#xff0c;用來裝載和管理具體的Bean對象&#xff0c;你像我們之前創建對象的時候就是通過new關鍵字來實現的&#xff0c;但是現在我們只需要告訴容器有哪些對…

Next Terminal 實戰:內網無密碼安全登錄

本文首發于 Anyeの小站&#xff0c;點擊閱讀原文體驗更加。 前言 在日常的 HomeLab 或小型私有云環境中&#xff0c;我們常常通過反向代理&#xff08;如 Nginx、Caddy 等&#xff09;將內網服務暴露到公網&#xff0c;方便遠程訪問。然而&#xff0c;一旦端口映射開啟、公網…

WebSocket斷線重連機制:保障實時通信的高可用性

一、為什么需要斷線重連&#xff1f;WebSocket雖提供全雙工通信能力&#xff0c;但實際環境中連接穩定性受多重威脅&#xff1a;??網絡層波動??&#xff1a;Wi-Fi切換、4G/5G信號抖動&#xff08;觸發onclose事件&#xff09;??服務端異常??&#xff1a;服務器宕機、主…

低空三維多物理場耦合風洞試驗,保證飛行器的性能安全是低空飛行的底線,是低空經濟發展的基礎

風墻\風矩陣開發背景&#xff1a;2024年被稱為中國低空經濟產業發展元年&#xff0c;國家發改委提出“無安全、不低空”原則&#xff0c;要求低空經濟產業在技術研發、適航認證、運營管理各環節優先保障安全。目前無人機及其他低空飛行器技術已深度融入軍事、民用與工業領域&am…

中文基于Qwen3-235B-2507蒸餾數據集的操作

中文基于Qwen3-235B-2507蒸餾數據集的操作 flyfish 方式1 from datasets import load_dataset from transformers import AutoTokenizer# -------------------------- 配置參數 -------------------------- TOKENIZER_PATH "/media/models/models/Qwen/Qwen3-8B/" #…

論文閱讀筆記:《Dataset Distillation by Matching Training Trajectories》

論文閱讀筆記&#xff1a;《Dataset Distillation by Matching Training Trajectories》1.動機與背景2.核心方法&#xff1a;軌跡匹配&#xff08;Trajectory Matching&#xff09;3.實驗與效果4.個人思考與啟發主體代碼算法邏輯總結一句話總結&#xff1a; 這篇論文通過讓合成…

STM32標準庫的工程創建

一.所需文件說明 1.啟動文件startup_xxxx.s 作用&#xff1a;初始化堆棧指針、復位向量、中斷向量表&#xff0c;執行 SystemInit() 后跳轉到 main()。 位置&#xff1a;Libraries/CMSIS/Device/ST/STM32Fxx/Source/Templates/arm/ 文件名&#xff1a; startup_stm32f10x_l…

k8s ceph sc 設置文件系統格式化參數

前言 默認的 sc 文件系統 inode 太少,對于小文件場景,往往會出現容量沒滿,inode 已經用盡的情況,本文說明如何設置 inode。 說明 本文使用的是 rook-ceph 部署的 ceph 作為存儲后端。 xfs 文件系統 sc 創建帶格式化參數的 xfs 文件系統的 sc allowVolumeExpansion: t…

關于Npm和Nvm的用法

npm是個什么東西 npm是什么 node package managernodejs包管理工具處理復雜的包的管理的問題那么使用npm以后就不需要從前端引入相應的代碼和文件等。 npm相關的命令 查看版本npm -v 更新npm install npm5.4.0 更新到最新版本npm install npmlatest 初始化項目 npm ini…

MyBatis高效查詢:簡化JDBC開發實戰

Mybatis MyBatis 是一款優秀持久層(DAO)框架&#xff0c;用于簡化 JDBC 開發 &#xff0c;原是 Apache 開源項目 iBatis&#xff0c;經歷遷移改名&#xff0c;2010 年從 Apache 遷到 Google Code 并改名&#xff0c;2013 年 11 月遷至 GitHub&#xff0c;官網為 https://mybati…

系統信息及進程管理命令

系統信息及進程管理 一、系統信息查看 常用命令&#xff1a;uname、hostnam、hostnamectl、uptime、df、du、free、lscpu 1、uname (1)、命令簡介 uname 是一個在 Unix 和類 Unix 系統&#xff08;如 Linux、macOS&#xff09;中常用的命令行工具&#xff0c;用于顯示系統信息。…

【Z字形變換】

代碼思路分析&#xff1a;Z 字形變換 1. 邊界情況處理 if (r 1 || r > n) return s;r 1&#xff1a;只有一行&#xff0c;直接返回原字符串&#xff08;無需變換&#xff09;。r > n&#xff1a;行數大于等于字符串長度&#xff0c;每行只有一個字符&#xff0c;直接返…