nginx 的 server 塊配置解析

前后端分離(前端 + flask):

	# 阻止ip訪問server {# default_server 是一個配置參數,用于指定當請求的域名(Host 頭)沒有匹配任何 server 塊時,Nginx 應該使用哪個 server 塊來處理這些請求。 listen 443 ssl default_server;server_name _; # 匹配所有未配置的域名或IP,這樣設置了 default_server 的 server 塊(即本塊)就會處理所有未匹配的請求。ssl_certificate cert/證書.pem;  # 簽名證書路徑,相對路徑、絕對路徑都可以ssl_certificate_key cert/私鑰.key;  # 私鑰路經return 403;  # 返回禁止訪問}# https配置模板server {# https的默認端口是443,只有把端口寫成443,登錄網站的時候才不需要寫端口號listen 443 ssl;# [::] 是 IPv6 的通配符地址,表示監聽所有可用的 IPv6 地址(類似于 IPv4 的 0.0.0.0)listen [::]:443 ssl;# Nginx 會先檢查請求的域名是否與某個 server_name 精確匹配,# 如果沒有精確匹配,會嘗試使用通配符匹配。如果沒有找到匹配的 server_name,Nginx 會將請求交給 default_server 的 server 塊。server_name 這里寫你的域名;# ssl配置,證書可以使用免費的Let's Encrypt生成,阿里云上也有,但是簽名需要域名,# 不需要域名的可以自己使用 openssl 創建自簽名證書,但是自簽名證書不受信任ssl_certificate cert/證書.pem;  # 簽名證書路徑,nginx支持pem格式的證書ssl_certificate_key cert/私鑰.key;  # 私鑰路經# 啟用ssl協議,強制使用 TLS 1.2 和 1.3 版本ssl_protocols TLSv1.2 TLSv1.3; # 啟用加密套件,加密套件的順序用冒號分隔。很重要,Nginx 會按照這個順序選擇一個加密套件ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';# 強制性要求瀏覽器在加密連接時優先使用 服務器端 的加密套件ssl_prefer_server_ciphers on;  # 會話緩存:會話緩存能夠存儲客戶端和服務器之間建立的 SSL/TLS 會話,避免每次請求都重新建立完整的握手過程,從而提升性能,減少 CPU 使用。通常 1 MB 可以存儲大約 4000 個會話。ssl_session_cache  shared:SSL:1m;  # 會話緩存時間:用于設置 SSL 會話緩存中會話的過期時間。在指定時間內,客戶端可以重用之前緩存的會話,對于大多數網站,設置為 5m(5 分鐘)到 10m(10 分鐘)是合理的范圍。ssl_session_timeout  5m;  # 向 HTTP 響應中添加自定義的 HTTP 頭部信息。語法:add_header <header_name> <value> [always];# add_header 指令可以寫在 http、server 或 location 塊中,作用范圍會逐級縮小。如果多個級別的 add_header 沖突,優先使用最具體(內層)的配置。# 強制客戶端使用 HTTPS 訪問,防止中間人攻擊。# max-age=31536000:緩存 1 年。includeSubDomains:對子域生效。preload:允許加入瀏覽器 HSTS 預加載列表。# [always]: 默認情況下,add_header 只會在響應狀態碼為 200、204、206、301、302、303 或 304 時添加。如果加上 always 參數,頭部會在所有響應中添加(包括錯誤狀態碼,如 404 或 500)。add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;# 只允許特定的 HTTP 方法。add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";# 限制加載資源的來源,防止惡意腳本注入。# default-src 'self' 僅允許加載本域的資源。如果你不熟悉域的概念就別用# script-src 'self' 'unsafe-inline'  限制腳本加載來源,僅允許本域和內聯腳本。如果你不熟悉域的概念就別用# img-src 'self' data: 限制圖片來源,僅允許本域和 data: 協議。add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; img-src 'self' data:;";# location 指令用于定義一個位置塊,它根據請求的 URI 匹配特定的路徑。# 前端代理,根路徑指向靜態文件location / {# 指定靜態文件的根目錄root   html/course;# 指定當請求為目錄時,默認返回的頁面index  index/index.html;}# 后端代理,將/api/開頭的請求轉發到后端服務器的 http://localhost:5000 上location /api/ {# proxy_pass 指定代理的后端服務器的地址。# 注意:http://localhost:5000/ 和 http://localhost:5000 所代表的url拼接規則是不一樣的。自己去搜 proxy_pass 參數怎么用proxy_pass http://localhost:5000/;# proxy_set_header 用于設置轉發給后端服務器的請求頭部。# Host頭部保持了原始請求的Host值。proxy_set_header Host $host;# X-Real-IP頭部記錄了原始客戶端的IP地址。proxy_set_header X-Real-IP $remote_addr;# X-Forwarded-For頭部是一個逗號分隔的列表,包含了從客戶端到代理服務器的所有IP地址(包括客戶端的IP地址)。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# X-Forwarded-Proto頭部記錄了原始請求使用的協議(如http或https)。proxy_set_header X-Forwarded-Proto $scheme;}# WebSocket 代理,我使用的是 flask_socketio,請根據實際情況修改匹配的urllocation /socket.io/ {proxy_pass http://localhost:5000;# 這里必須使用 http1.1 版本,因為1.1版本才是長連接proxy_http_version 1.1;# 設置 Upgrade 請求頭,用于處理協議升級(從 HTTP 升級到 WebSocket)。proxy_set_header Upgrade $http_upgrade;# 強制將 Connection 設置為 "upgrade",以支持協議切換。proxy_set_header Connection "upgrade";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;# 設置超時時間為 60 秒,用于保持 WebSocket 連接。proxy_read_timeout 60s;}# 404錯誤頁面配置:當請求的文件不存在時,轉入 /404.html 頁面error_page  404              /404.html;# 匹配 /404 錯誤頁面,=表示精確匹配location = /404.html {# 指定 404.html 頁面的位置root /usr/share/nginx/html/404.html;}}

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

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

相關文章

Ubuntu 22.04.5 修改IP

Ubuntu22.04.5使用的是netplan管理網絡&#xff0c;因此需要在文件夾/etc/netplan下的01-network-manager-all.yaml中修改&#xff0c;需要權限&#xff0c;使用sudo vim或者其他編輯器&#xff0c;修改后的內容如下&#xff1a; # Let NetworkManager manage all devices on …

‘vue-cli-service‘ 不是內部或外部命令,也不是可運行的程序 或批處理文件。

這個錯誤信息表示系統找不到 vue-cli-service 命令&#xff0c;通常是因為 Vue 項目沒有正確安裝所需的依賴包。解決這個問題的步驟如下&#xff1a; 1. 確保你已經安裝了依賴 首先&#xff0c;確保你在項目目錄下&#xff0c;并且運行了以下命令來安裝項目所需的依賴&#x…

解決virtualbox克隆ubuntu虛擬機之后IP重復的問題

找遍了國內論壇&#xff0c;沒一個能解決該問題的&#xff0c;所以我自己寫個文章吧&#xff0c;真討厭那些只會搬運的&#xff0c;污染國內論壇環境&#xff0c;搜一個問題&#xff0c;千篇一律。 問題 操作系統版本為"Ubuntu 24.04 LTS" lennytest1:~$ cat /etc…

基于SpringBoot的寵物寄養系統的設計與實現(源碼+SQL+LW+部署講解)

文章目錄 摘 要1. 第1章 選題背景及研究意義1.1 選題背景1.2 研究意義1.3 論文結構安排 2. 第2章 相關開發技術2.1 前端技術2.2 后端技術2.3 數據庫技術 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系統需求分析 4. 第4章 系統概要設計4.1 系統功能模塊設計4.2 數據庫設計 5.…

idea 開發Gradle 項目

在Mac上安裝完Gradle后&#xff0c;可以在IntelliJ IDEA中配置并使用Gradle進行項目構建和管理。以下是詳細的配置和使用指南&#xff1a; 1. 驗證Gradle是否已安裝 在終端運行以下命令&#xff0c;確保Gradle安裝成功&#xff1a; gradle -v如果輸出Gradle版本信息&#xff…

REST與RPC的對比:從性能到擴展性的全面分析

在微服務架構中&#xff0c;服務間通信是核心問題之一。常見的兩種通信方式是REST&#xff08;Representational State Transfer&#xff09;和RPC&#xff08;Remote Procedure Call&#xff09;。它們各有優缺點&#xff0c;適用于不同場景。本文將從性能、擴展性、兼容性和開…

【Linux】:線程安全 + 死鎖問題

&#x1f4c3;個人主頁&#xff1a;island1314 &#x1f525;個人專欄&#xff1a;Linux—登神長階 ?? 歡迎關注&#xff1a;&#x1f44d;點贊 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1. 線程安全和重入問題&…

Mysql超詳細安裝配置教程(保姆級)

目錄 一、下載Mysql 二、安裝Mysql 三、配置Mysql 四、連接Mysql 五、部分疑難問題 一、下載Mysql 從官網下載MySQL&#xff0c;這里我選用的是Mysql8.0.34版本 二、安裝Mysql 下載完成后直接雙擊進行安裝&#xff0c;打開后的頁面如下所示&#xff1a; “Developer Defa…

WFP Listbox綁定數據后,數據變化的刷新

Listbox綁定數據通過ItemsSource來的&#xff0c;如果綁定的是普通的List<數據>&#xff0c;不會自己刷新。 使用ObservableCollection集合 解決問題的方法: 將數組替換為 ObservableCollection ObservableCollection 是專為綁定設計的集合類型&#xff0c;可以通知 W…

JVM 及內存管理:掌握 Java 8 的內存模型與垃圾回收機制

Java 虛擬機&#xff08;JVM&#xff09;是運行 Java 程序的核心&#xff0c;它負責代碼執行和內存管理。Java 8 引入了一些重要的內存模型和垃圾回收機制優化。本文將詳細解析 JVM 的內存模型、垃圾回收機制&#xff0c;并配以相關圖解&#xff0c;幫助你深刻理解 JVM 的工作原…

Maple軟件的安裝和使用

文章目錄 1.前言說明2.我為什么要學習Maple3.軟件的安裝4.如何使用4.1基本的賦值語句4.2函數的定義4.3三個類型的書寫介質 5.指數運算5.1使用面板5.2自己輸入 6.對數的使用 1.前言說明 眾所周知&#xff0c;我雖然是一名這個計算機專業的學生&#xff0c;但是我對于數學&#…

【超級詳細】Vue3項目上傳文件到七牛云的詳細筆記

概述 繼上一篇筆記介紹如何綁定七牛云的域名之后&#xff0c;這篇筆記主要介紹了如何在Vue3項目中實現文件上傳至七牛云的功能。我們將使用Cropper.js來處理圖像裁剪&#xff0c;并通過自定義組件和API調用來完成整個流程。 這里直接給出關鍵部分js代碼&#xff0c;上傳之前要先…

Sqoop的使用

每個人的生活都是一個世界&#xff0c;即使最平凡的人也要為他那個世界的存在而戰斗。 ——《平凡的世界》 目錄 一、sqoop簡介 1.1 導入流程 1.2 導出流程 二、使用sqoop 2.1 sqoop的常用參數 2.2 連接參數列表 2.3 操作hive表參數 2.4 其它參數 三、sqoop應用 - 導入…

FFmpeg 4.3 音視頻-多路H265監控錄放C++開發二十一.4,SDP協議分析

SDP在4566 中有詳細描述。 SDP 全稱是 Session Description Protocol&#xff0c; 翻譯過來就是描述會話的協議。 主要用于兩個會話實體之間的媒體協商。 什么叫會話呢&#xff0c;比如一次網絡電話、一次電話會議、一次視頻聊天&#xff0c;這些都可以稱之為一次會話。 那為什…

智簡未來創新與簡化的AI之路

附上鏈接地址&#xff1a;https://aint.top 在這個數字化迅速發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;不僅僅是技術的前沿&#xff0c;它正在成為每個行業創新的核心推動力。作為一家專注于AI技術應用與創新的公司&#xff0c;智簡未來旨在通過智能化的工具…

[極客大挑戰 2019]HardSQL 1

看了大佬的wp&#xff0c;沒用字典爆破&#xff0c;手動試出來的&#xff0c;屏蔽了常用的關鍵字&#xff0c;例如&#xff1a;order select union and 最搞的是&#xff0c;空格也有&#xff0c;這個空格后面讓我看了好久&#xff0c;該在哪里加括號。 先傳入1’ 1試試&#…

【Pytorch實用教程】深入了解 torchvision.models.resnet18 新舊版本的區別

深入了解 torchvision.models.resnet18 新舊版本的區別 在深度學習模型開發中,PyTorch 和 torchvision 一直是我們不可或缺的工具。近期,torchvision 對其模型加載 API 進行了更新,將舊版的 pretrained 參數替換為新的 weights 參數。本文將介紹這一變化的背景、具體區別,…

Elasticsearch名詞解釋

文章目錄 1.什么是Elasticsearch?2.什么是elastic stack(ELK)?3.什么是Lucene?4.什么是文檔(document)&#xff1f;5.什么是詞條(term)&#xff1f;6.什么是正向索引&#xff1f;7.什么是倒排索引&#xff1f;8.ES中的索引(index)9.映射(Mapping)10.DSL11.elastcisearch與my…

網絡滲透測試實驗三:SQL注入

1.實驗目的和要求 實驗目的:了解SQL注入的基本原理;掌握PHP腳本訪問MySQL數據庫的基本方法;掌握程序設計中避免出現SQL注入漏洞的基本方法;掌握網站配置。 系統環境:Kali Linux 2、Windows Server 網絡環境:交換網絡結構 實驗工具: SqlMAP;DVWA 2.實驗步驟 實驗目…

SQL-Server鏈接服務器訪問Oracle數據

SQL Server 鏈接服務器訪問 Oracle 離線安裝 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下載 NetFx3.cab 文件&#xff0c;并將其放置在 Windows 10 系統盤的 C:Windows 文件夾中。 以管理員身份運行命令提示符&#xff0c;輸入以下命令并回車&#xff1a; …