当前位置: 首页 > article >正文

【原创】在高性能服务器上,使用受限用户运行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;
}

相关文章:

【原创】在高性能服务器上,使用受限用户运行Nginx,充当反向代理服务器[未完待续]

起因 在公共高性能服务器上运行OllamaDeepSeek,如果按照默认配置启动Ollama程序,则自己在远程无法连接你启动的Ollama服务。 如果修改配置,则会遇到你的Ollama被他人完全控制的安全风险。 不过,我们可以使用一个方向代理&#…...

网络_面试_HTTP请求报文和HTTP响应报文

简介: HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。 HTTP请求报文 一个HTTP请求报文由请求行(request line)、请求头部&…...

详解CPU的组成与功能

CPU的组成与功能 一、 控制单元(Control Unit, CU)二、 算术逻辑单元(Arithmetic Logic Unit, ALU)三、 寄存器(Registers)四、 高速缓存(Cache)五、 辅助结构与技术译码器&#xff…...

Spring boot3-WebClient远程调用非阻塞、响应式HTTP客户端

来吧&#xff0c;会用就行具体理论不讨论 1、首先pom.xml引入webflux依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId> </dependency> 别问为什么因为是响应式....…...

18 | 实现简洁架构的 Handler 层

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课&#xff1b;欢迎加入 云原生 AI 实战 星球&#xff0c;12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力&#xff08;聚焦于 Go、云原生、AI Infra&#xff09;&#xff1b;本节课最终…...

《Transformer如何进行图像分类:从新手到入门》

引言 如果你对人工智能&#xff08;AI&#xff09;或深度学习&#xff08;Deep Learning&#xff09;感兴趣&#xff0c;可能听说过“Transformer”这个词。它最初在自然语言处理&#xff08;NLP&#xff09;领域大放异彩&#xff0c;比如在翻译、聊天机器人和文本生成中表现出…...

coding ability 展开第三幕(滑动指针——基础篇)超详细!!!!

文章目录 前言滑动窗口长度最小的子数组思路 无重复字符的最长子串思路 最大连续1的个数思路 将x减到0的最小操作数思路 总结 前言 前面我们已经把双指针的一些习题练习的差不多啦 今天我们来学习新的算法知识——滑动窗口 让我们一起来探索滑动窗口的魅力吧 滑动窗口 滑动窗口…...

RAGFlow版本升级-Win10系统Docker

下载源码压缩包 https://github.com/infiniflow/ragflow.git 删除旧版本代码文件夹&#xff0c;把下载的代码解压到原先目录 更新一下env文件&#xff1a;ragflow/docker/.env 把值改为最新版本即可 RAGFLOW_IMAGEinfiniflow/ragflow:v0.17.1 更新一下docker docker compose -…...

通过mybatis的拦截器对SQL进行打标

1、背景 在我们开发的过程中&#xff0c;一般需要编写各种SQL语句&#xff0c;万一生产环境出现了慢查询&#xff0c;那么我们如何快速定位到底是程序中的那个SQL出现的问题呢&#xff1f; 2、解决方案 如果我们的数据访问层使用的是mybatis的话&#xff0c;那么我们可以通过…...

如何自己做奶茶,从此告别奶茶店

自制大白兔奶茶&#xff0c;奶香与茶香激情碰撞&#xff0c;每一口都是香浓与甜蜜的双重诱惑&#xff0c;好喝到跺脚&#xff01;丝滑口感在舌尖舞动&#xff0c;仿佛味蕾在开派对。 简单几步就能复刻&#xff0c;成本超低&#xff0c;轻松在家享受奶茶自由。 材料:大白兔奶糖&…...

JavaScript性能优化实战指南

JavaScript性能优化实战指南 1. 性能分析工具与指标 核心工具链 Chrome DevTools&#xff1a; Performance面板&#xff1a;记录运行时性能&#xff0c;分析长任务&#xff08;Long Tasks&#xff09;、强制回流&#xff08;Layout Shifts&#xff09;、函数调用堆栈。Memory面…...

宇树人形机器人开源模型

1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…...

【Linux】浅谈冯诺依曼和进程

一、冯诺依曼体系结构 冯诺依曼由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。 冯诺依曼的设计特点 二进制表示 所有数据&#xff08;包括程序指令&#xff09;均以二进制形式存储和运算&#xff0c;简化了硬件逻辑设计&#xff0c;提高了可靠性。 存储程序原理…...

env.development.local 和 env.development 的区别

env.development.local 和 env.development 的区别 区别1、场景2、git管理3、加载策略 思考原因如下 区别 1、场景 env.development: 用于开发环境的环境变量配置env.development.local: 用于存储特定于开发者的本地配置信息 2、git管理 env.development.local 会通过*.loca…...

linux操作系统实战

第一题 创建根目录结构中的所有的普通文件 [rootlocalhost ~]# cd /[rootlocalhost /]# mkdir /text[rootlocalhost /]# cd /text[rootlocalhost text]# mkdir /text/boot /text/root /text/home /text/bin /text/sbin /text/lib /text/lib64 /text/usr /text/opt /text/etc /…...

Python Cookbook-4.1 对象拷贝

任务 想拷贝某对象。不过&#xff0c;当你对一个对象赋值&#xff0c;将其作为参数传递&#xff0c;或者作为结果返回时&#xff0c;Python 通常会使用指向原对象的引用&#xff0c;并不是真正的拷贝。 解决方案 Python 标准库的 copy 模块提供了两个函数来创建拷贝。第一个…...

浅谈时钟启动和Systemlnit函数

时钟是STM32的关键&#xff0c;是整个系统的心脏&#xff0c;时钟如何启动&#xff0c;时钟源如何选择&#xff0c;各个参数如何设置&#xff0c;我们从源码来简单分析一下时钟的启动函数Systemlnit&#xff08;&#xff09;。 Systemlnit函数简介 我们先来看一下源程序的注释…...

事业单位ABCDE类

1 我刚刚查阅了一下安徽省市直单位报名的表&#xff0c;我这个专业报的岗位大多数是自然科学专技岗。 2 安徽省的岗位大多都限制计算机科学与技术&#xff0c;我这个0854计算机技术能报的岗位十分有限。 而且我没有看到一个岗位只招应届生&#xff0c;显然安徽不保护应届生的…...

Python:函数(一)

python函数相关的知识点 1. 函数定义与调用 定义&#xff1a;使用 def 关键字&#xff0c;后接函数名和参数列表。 def greet(name):"""打印问候语&#xff08;文档字符串&#xff09;"""print(f"Hello, {name}!") 调用&#xff1a…...

MySql学习_基础Sql语句

目录 1.数据库相关概念 2.SQL 2.1 SQL通用语法 2.2 SQL分类 2.3 DDL&#xff08;数据库定义语言&#xff09; 2.4 DML&#xff08;数据操作语言&#xff09; 2.5 DQL&#xff08;数据查询语言&#xff09; 2.6 DCL&#xff08;数据控制语言&#xff09; 3. 函数 3.1 字…...

Nginx 生产环境安全配置加固

以下是Nginx生产环境安全配置加固的综合方案&#xff0c;结合多个技术实践和行业标准整理&#xff1a; 一、基础安全防护 1‌. 隐藏版本信息‌ 在http或server块添加server_tokens off;&#xff0c;避免暴露Nginx版本号‌。使用headers-more-nginx-module模块彻底移除响应头…...

C#中继承的核心定义‌

1. 继承的核心定义‌ ‌继承‌ 是面向对象编程&#xff08;OOP&#xff09;的核心特性之一&#xff0c;允许一个类&#xff08;称为‌子类/派生类‌&#xff09;基于另一个类&#xff08;称为‌父类/基类‌&#xff09;构建&#xff0c;自动获得父类的成员&#xff08;字段、属…...

小白学Agent技术[5](Agent框架)

文章目录 Agent框架Single Agent框架BabyAGIAutoGPTHuggingGPTHuggingGPT工作原理说明GPT-EngineerAppAgentOS-Copilot Multi-Agent框架斯坦福虚拟小镇TaskWeaverMetaGPT微软UFOAgentScope现状 常见Agent项目比较概述技术规格和能力实际应用案例开发体验比较ChatChain模式 Agen…...

21.dirsearch:Web 路径扫描工具

一、项目介绍 dirsearch 是一款高效、多线程的 Web 路径扫描工具&#xff0c;专为渗透测试人员和网络安全研究人员设计&#xff0c;用于发现目标网站的隐藏目录、敏感文件及未授权接口。其支持自定义字典、代理配置、请求头伪装等功能&#xff0c;适用于红队渗透、漏洞挖掘及资…...

VSTO(C#)Excel开发4:打印设置

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

设计模式Python版 模板方法模式(上)

文章目录 前言一、模板方法模式二、模板方法模式示例 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&#xff1a;关注类和对象之间…...

源IP泄露后如何涅槃重生?高可用架构与自动化防御体系设计

一、架构层解决方案 1. 高防代理架构设计 推荐架构&#xff1a; 用户 → CDN&#xff08;缓存静态资源&#xff09; → 高防IP&#xff08;流量清洗&#xff09; → 源站集群&#xff08;真实IP隐藏&#xff09; ↑ Web应用防火墙&#xff08;WAF&#xff09; 实施要点&a…...

transformer bert 多头自注意力

输入的&#xff08;a1,a2,a3,a4&#xff09;是最终嵌入&#xff0c;是一个(512,768)的矩阵&#xff1b;而a1是一个token&#xff0c;尺寸是768 a1通过wq权重矩阵&#xff0c;经过全连接变换得到查询向量q1&#xff1b;a2通过Wk权重矩阵得到键向量k2&#xff1b;q和k点乘就是值…...

python-leetcode-定长子串中元音的最大数目

1456. 定长子串中元音的最大数目 - 力扣&#xff08;LeetCode&#xff09; 可以使用 滑动窗口 方法来解决这个问题。步骤如下&#xff1a; 初始化&#xff1a;计算前 k 个字符中元音字母的个数&#xff0c;作为初始窗口的值。滑动窗口&#xff1a;遍历字符串&#xff0c;每次右…...

Spring Boot + MyBatis-Plus 项目目录结构

以下是一个标准的 Spring Boot MyBatis-Plus 项目目录结构及文件命名规范&#xff0c;包含每个目录和文件的作用说明&#xff0c;适用于中大型项目开发&#xff1a; 项目根目录结构 src/ ├── main/ │ ├── java/ # Java 源代码 │ │ └── com/…...