【原創】在高性能服務器上,使用受限用戶運行Nginx,充當反向代理服務器[未完待續]

起因

在公共高性能服務器上運行Ollama+DeepSeek,如果按照默認配置啟動Ollama程序,則自己在遠程無法連接你啟動的Ollama服務。

如果修改配置,則會遇到你的Ollama被他人完全控制的安全風險。

不過,我們可以使用一個方向代理,并增加一些限制的方式,讓我們從遠程來訪問。同時可以阻止未授權的人的訪問。

現在的問題是,我們使用的高性能服務器是公共的,我們沒有root權限。意味著我們很多軟件我們不能安裝。

不過,Nginx可以以普通用戶的身份編譯、安裝和運行。然后使用這個Nginx做反向代理,添加安全驗證。

安裝Nginx

首先下載Nginx源碼

https://nginx.org/en/download.html
注意,不要選版本太高的。公共服務器一般操作系統比較老,如果版本太高,可能編譯不了(編譯器版本太低)。

這里,我選擇 https://nginx.org/download/nginx-1.25.3.tar.gz

如果你喜歡高版本的話,可以試試高版本的,基本流程都一樣。

一般情況下高性能服務器只能在內網使用,不通外網,如果通外網的話,需要使用內網的代理服務器。

下載好源碼后,將其上載到服務器。

解壓

tar -xvzf nginx-1.25.3.tar.gz

配置

 cd nginx-1.25.3/
./configure --prefix=$HOME/nginx

接下來,可能會報錯。報錯的原因往往是缺少某個模塊。如果為了快速完成,可以不包含哪些模塊,根據提示添加參數。

我這里有兩個模塊沒找到,根據提示不用這兩個模塊。
記得添加 --with-http_ssl_module 模塊

./configure --prefix=$HOME/nginx --with-http_ssl_module --without-http_rewrite_module --without-http_gzip_module

修正

./configure --prefix=$HOME/nginx --without-http_rewrite_module --without-http_gzip_module --with-http_ssl_module --with-openssl=/usr/include/openssl

openssl源碼
https://openssl-library.org/source/

tar zxvf 
./configure --prefix=$HOME/nginx --without-http_rewrite_module --without-http_gzip_module --with-http_ssl_module --with-openssl=/public/home/10201401498/openssl-3.0.16

編譯

這里基本上不會出錯,稍等一會兒即可完成。

make

安裝

這一步也沒啥。

make install

運行Nginx

直接運行如下命令,一般會出錯。80端口,沒權限用。

$HOME/nginx/sbin/nginxnginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

結束進程

執行如下指令,找到自己運行的nginx程序

 ps aux | grep nginx

根據進程號,全部殺掉

kill -9 12345
kill -9 12121

修改配置

vi $HOME/nginx/conf/nginx.conf

做如下修改,將監聽的80端口改成8088或其他高于1024的端口號。

erver {listen 8088;  # 改為 8080 或其他高于 1024 的端口server_name localhost;location / {root   html;index  index.html index.htm;}
}

再次運行

$HOME/nginx/sbin/nginx

然后,沒啥結果

測試

執行如下指令,有結果輸出,說明Nginx運行成功。

curl http://127.0.0.1:8088

設置反向代理

編輯配置文件1

vi $HOME/nginx/conf/nginx.conf

在http節中,添加如下內容:

		map $http_authorization $is_authorized {default 0;  # 默認未授權"Bearer YOUR_FIXED_TOKEN_HERE" 1;  # 替換為你的固定 Bearer Token}

在這里插入圖片描述

添加PATH

export PATH=$HOME/nginx/sbin:$PATH
vi $HOME/nginx/conf/deepseek.0x99.top.conf
server
{listen 8088;listen 8443 ssl http2 ;server_name deepseek.0x99.top;index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/deepseek.0x99.top;#CERT-APPLY-CHECK--START# 用于SSL證書申請時的文件驗證相關配置 -- 請勿刪除include /www/server/panel/vhost/nginx/well-known/ds.0x88.top.conf;#CERT-APPLY-CHECK--END#SSL-START SSL相關配置,請勿刪除或修改下一行帶注釋的404規則#error_page 404/404.html;#HTTP_TO_HTTPS_STARTif ($server_port !~ 8443){rewrite ^(/.*)$ https://$host$1 permanent;}#HTTP_TO_HTTPS_ENDssl_certificate    /www/server/panel/vhost/cert/deepseek.0x99.top/fullchain.pem;ssl_certificate_key    /www/server/panel/vhost/cert/deepseek.0x99.top/privkey.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_tickets on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000";error_page 497  https://$host$request_uri;#SSL-END#ERROR-PAGE-START  錯誤頁配置,可以注釋、刪除或修改error_page 404 /404.html;#error_page 502 /502.html;#ERROR-PAGE-END#PHP-INFO-START  PHP引用配置,可以注釋或修改#清理緩存規則location ~ /purge(/.*) {proxy_cache_purge cache_one $host$1$is_args$args;#access_log  /www/wwwlogs/ds.0x88.top_purge_cache.log;}# 檢查是否授權if ($is_authorized != 1) {return 401 "Unauthorized: Invalid Bearer Token";  # 返回 401 錯誤}#引用反向代理規則,注釋后配置的反向代理將無效include /www/server/panel/vhost/nginx/proxy/deepseek.0x99.top/*.conf;include enable-php-00.conf;#PHP-INFO-END#REWRITE-START URL重寫規則引用,修改后將導致面板設置的偽靜態規則失效include /www/server/panel/vhost/rewrite/deepseek.0x99.top.conf;#REWRITE-END#禁止訪問的文件或目錄location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return 404;}#一鍵申請SSL證書驗證目錄相關設置location ~ \.well-known{allow all;}#禁止在證書驗證目錄放入敏感文件if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {return 403;}access_log  /www/wwwlogs/deepseek.0x99.top.log;error_log  /www/wwwlogs/deepseek.0x99.top.log;
}

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

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

相關文章

Bash和Zsh的主要差異是?

Bash(GNU Bourne-Again Shell) 和 Zsh(Z Shell) 都是功能強大的Unix/Linux Shell,廣泛用于交互式使用和腳本編寫。 盡管它們有很多相似之處,但在功能、語法、配置選項等方面也存在一些顯著的區別。 是Bas…

芯科科技推出的BG29超小型低功耗藍牙?無線SoC,是藍牙應用的理想之選

具有擴大的內存和超低功耗特性的超小型BG29是互聯健康設備的理想之選 低功耗無線領域內的領導性創新廠商Silicon Labs(亦稱“芯科科技”,NASDAQ:SLAB)今日宣布:推出全新的第二代無線開發平臺產品BG29系列無線片上系統…

【數據挖掘】知識蒸餾(Knowledge Distillation, KD)

1. 概念 知識蒸餾(Knowledge Distillation, KD)是一種模型壓縮和知識遷移技術,旨在將大型復雜模型(稱為教師模型)中的知識傳遞給一個較小的模型(稱為學生模型),以減少計算成本&…

選型消息隊列(MQ):ActiveMQ、RabbitMQ、RocketMQ、Kafka對比

選型消息隊列(MQ):ActiveMQ、RabbitMQ、RocketMQ、Kafka對比 選型消息隊列(MQ)1. 引言2. 消息隊列核心指標3. MQ 技術對比分析4. 詳細分析及案例4.1 ActiveMQ:傳統企業級 MQ 方案4.2 RabbitMQ:高…

AWK 入門教程:強大的文本處理工具

AWK 是一種強大的文本處理工具,廣泛用于 Linux/Unix 系統中對文本文件或數據流進行操作。它能夠基于條件篩選、統計字段、重新排列數據等。主要特點包括: 2. AWK 的基本語法 2.1 AWK 程序的結構 AWK 程序的結構: awk pattern { action } file 2.2 常…

mysql select distinct 和 group by 哪個效率高

在有索引的情況下,SELECT DISTINCT和GROUP BY的效率相同;在沒有索引的情況下,SELECT DISTINCT的效率高于GROUP BY?。這是因為SELECT DISTINCT和GROUP BY都會進行分組操作,但GROUP BY可能會進行排序,觸發filesort&…

使用conda將python環境打包,移植到另一個linux服務器項目中

問題:因為新的服務器A不能聯網,導致離線pip install包耗時耗力,舊的服務器B中的Anaconda和A中是同一個版本,有現成的python環境,并且服務器B可以聯網,現想將B中的環境,直接移植到A中使用。 解決…

晶晨S905M/晶晨S905L2芯片-原機安卓4升級安卓7.1.2-通刷線刷固件包

晶晨S905M/晶晨S905L2芯片-原機安卓4升級安卓7.1.2-通刷線刷固件包 線刷方法:(新手參考借鑒一下) 1、準備好一根雙公頭USB線刷刷機線,長度30-50CM長度最佳,同時準備一臺電腦; 2、電腦上安裝好…

KICK第四講Linux 系統下安裝 GCC 編譯器全指南

Linux 系統下安裝 GCC 編譯器全指南 GCC(GNU Compiler Collection)是 Linux 系統下最常用的編譯器之一,支持 C/C、Java 等多種編程語言。本文將介紹不同 Linux 發行版下的安裝方法,幫助開發者快速配置開發環境。 一、使用包管理…

Django系列教程(8)——函數視圖及通用類視圖

目錄 什么是視圖(View)及其工作原理 接近現實的函數視圖 更復雜的案例: 視圖處理用戶提交的數據 基于函數的視圖和基于類的視圖 Django通用類視圖 a. ListView b. DetailView c. CreateView d. UpdateView e. FormView f. DeleteView 小結 Django的視圖(view)是處理…

c# 查找相似顏色算法

下是一個基于歐幾里得距離的C#顏色相似度查找算法實現,包含詳細注釋和優化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 顏色容器 - 使用字典存儲顏色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…

【A2DP】藍牙音頻編解碼器互操作性要求詳解

目錄 一、音頻編解碼器互操作性&#xff1a;核心要點總覽 二、必選與可選編解碼器互操作性要求大盤點 2.1 必選與可選的編解碼器支持 2.2 必選編解碼器要求 2.3 可選編解碼器要求 2.4 廠商自定義&#xff08;Vendor Specific&#xff09;A2DP編解碼器互操作性要求 2.5 不…

electron 設置跨域iframe

在 Electron 的主進程中禁用同源策略 在 Electron 的主進程文件中添加 app.commandLine.appendSwitch("disable-site-isolation-trials"); 來禁用站點隔離試驗。在創建 BrowserWindow 時&#xff0c;設置 webPreferences 的 webSecurity: false 來禁用同源策略。

c-線程創建,同步互斥,互斥鎖;

文章目錄 案例描述1代碼實現代碼解釋 案例背景2代碼實現代碼解析關鍵概念總結擴展練習 案例描述1 我們將模擬一個簡單的售票系統&#xff0c;其中有兩個售票窗口同時出售100張票。為了確保不會賣出超過100張票&#xff0c;并且不會出現賣票時的競態條件&#xff08;race condi…

SpringBoot第二天

目錄 1.Web開發 1.1簡介 1.2SpringBoot對靜態資源的映射規則 1.3模板引擎 1.3.1引入thymeleaf&#xff1b; 1.3.2Thymeleaf語法 1.3.2.1標準表達式語法 1.變量表達式 1.3.2.2表達式支持的語法 1.3.2.3常用的thymeleaf標簽 1.4Springboot整合springmvc 1.4.1Springmvc…

Redis的緩存雪崩、緩存擊穿、緩存穿透與緩存預熱、緩存降級

一、緩存雪崩&#xff1a; 1、什么是緩存雪崩&#xff1a; 如果緩在某一個時刻出現大規模的key失效&#xff0c;那么就會導致大量的請求打在了數據庫上面&#xff0c;導致數據庫壓力巨大&#xff0c;如果在高并發的情況下&#xff0c;可能瞬間就會導致數據庫宕機。這時候如果…

Html5記憶翻牌游戲開發經驗分享

H5記憶翻牌游戲開發經驗分享 這里寫目錄標題 H5記憶翻牌游戲開發經驗分享前言項目概述技術要點解析1. 頁面布局&#xff08;HTML CSS&#xff09;響應式設計 2. 翻牌動畫效果3. 游戲邏輯實現狀態管理卡片配對檢測 開發技巧總結1. 模塊化設計2. 性能優化3. 用戶體驗 踩坑經驗擴…

【開源+代碼解讀】Search-R1:基于強化學習的檢索增強大語言模型框架3小時即可打造個人AI-search

大語言模型(LLMs)在處理復雜推理和實時信息檢索時面臨兩大挑戰:知識局限性(無法獲取最新外部知識)和檢索靈活性不足(傳統方法依賴固定檢索流程)。現有方法如檢索增強生成(RAG)和工具調用(Tool-Use)存在以下問題: RAG:單輪檢索導致上下文不足,無法適應多輪交互場景…

Linux網絡套接字編程——創建并綁定

目錄 網絡字節序 socket編程接口 socket bind 如果將進程比作一個房子&#xff0c;那套接字相當于是一扇門&#xff0c;通向與外界通信的通道。 在網絡中&#xff0c;如何理解套接字呢&#xff0c;時刻記住套接字是為了標識互聯網中的某一臺主機上的某一個進程&#xff0c…

1720. 解碼異或后的數組

解碼異或后的數組 題目描述嘗試做法 題目描述 未知整數數組 arr 由 n 個非負整數組成。 經編碼后變為長度為 n - 1 的另一個整數數組 encoded &#xff0c;其中 encoded[i] arr[i] XOR arr[i 1] 。例如&#xff0c;arr [1,0,2,1] 經編碼后得到 encoded [1,2,3] 。 給你編…