【原创】在高性能服务器上,使用受限用户运行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.rhkb.cn/news/33209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 7.x入门学习-系统架构与工作流程

1 核心概念 1.1 索引(Index) Elasticsearch 索引的精髓:一切设计都是为了提高搜索的性能。 一个索引就是一个拥有相似特征的文档集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个…

Mysql - 自增主键的使用细节

通过一些问题来谈论 Mysql 中的自增主键 默认情况下我们会使用自增主键,你觉得为什么要用自增的主键?有什么好处?自增主键的话,如果用 INT,会有 int 最大数限制,如果超过 int 最大数,你觉得应该…

《SQL性能优化指南:新手如何写出高效的数据库查询

新手程序员如何用三个月成为SQL高手?万字自学指南带你弯道超车 在数据为王的时代,掌握SQL已成为职场新人的必修课。你可能不知道,仅用三个月系统学习,一个零基础的小白就能完成从数据库萌新到SQL达人的蜕变。去年刚毕业的小王就是…

UE5.5 Niagara初始化粒子模块

粒子生成模块列表是每个创建的粒子都会调用一次对应的模块。此阶段中的模块设置每个粒子的初始值。粒子将从上到下的顺序执行模块。 下面,将列一下粒子生成常用的模块。 Initialize Particle 初始化粒子 所有粒子必需的基础模块,用于初始化粒子的基本属…

蓝耘携手通义万相2.1:引领AI创作革新,重塑视觉体验

前言 在人工智能技术迅猛发展的时代,AI算力平台成为推动产业升级的关键力量。蓝耘元生代智算云平台作为领先的智能计算平台,致力于为企业和研究机构提供高效、稳定的AI算力支持。近期,该平台对通义万相2.1进行了全面适配和优化,为…

【开源免费】基于SpringBoot+Vue.JS光影视频平台(JAVA毕业设计)

本文项目编号 T 239 ,文末自助获取源码 \color{red}{T239,文末自助获取源码} T239,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

JVM 垃圾回收器的选择

一:jvm性能指标吞吐量以及用户停顿时间解释。 二:垃圾回收器的选择。 三:垃圾回收器在jvm中的配置。 四:jvm中常用的gc算法。 一:jvm性能指标吞吐量以及用户停顿时间解释。 在 JVM 调优和垃圾回收器选择中&#xff0…

VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、VScode下载及安装二、安装 MinGW-w64 工具链三、Windows环境变量配置四、检查 M…

FANUC机器人几种常用的通讯网络及接口

FANUC机器人几种常用的通讯网络及接口 Devicenet 网络通讯接口,接口为5针线 (规定用的机架为 81-84) PROFIBUS 网络通讯接口,针脚为2针(规定用的机架为 67) Intemet 网络通讯接口(常用的网线接口&#xf…

分布式锁技术全景解析:从传统锁机制到MySQL、Redis/Redisson与ZooKeeper实现

文章目录 一、分布式锁介绍1.1 为什么需要分布式锁1.2 什么是分布式锁?1.3 分布式锁特点 二. 传统锁回顾2.1商品超卖演示2.2 JVM锁演示2.3 JVM锁失效的三种情况2.3.1 多例模式2.3.2 事务2.3.3 分布式集群 三. 基于mysql实现分布式锁3.1 一条SQL3.2 悲观锁3.3 乐观锁…

【GPT入门】第18课 langchain介绍与API初步体验

【GPT入门】langchain第一课 langchain介绍与API初步体验 1. langchain介绍定义特点1. 模块化与灵活性2. 链式调用机制3. 数据连接能力4. 记忆管理功能5. 提示工程支持6. 可扩展性 2.langchain核心组件架构图3. 最简单的helloworld入门 1. langchain介绍 LangChain 是一个用于…

神经网络分类任务

import torch %matplotlib inline from pathlib import Path import requestsimport torchvision mnist_dataset torchvision.datasets.MNIST(root./data, downloadTrue) 下载mnist数据集 但不知道数据集里面是什么打印 import torchvision import torchvision.transforms …

ROS实践(三)机器人描述文件xacro(urdf扩展)

目录 一、定义 二、xacro 文件常见组成部分 1. 命名空间声明 2. 定义宏 3. 调用宏 4. 定义参数 5. 条件语句 6. 转换 xacro 文件为 urdf 7. gazebo标签 三、代码示例 1. gazebo标签使用(仿真参数配置) 2. 引用仿真配置并定义机器人模型&#x…

Vision Mamba论文精读笔记

这篇博客主要针对Vision Mamba 论文进行精读,包含全文翻译以及部分内容注解。 读者最好有SSM以及Mamba的前期基础,便于理解。 论文链接:[2401.09417] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Spa…

大模型架构记录4-文档切分 (chunks构建)

chunks: 块 trunks : 树干 “RAG”通常指 检索增强生成(Retrieval-Augmented Generation) 主要框架:用户提query,找到和它相关的,先把问题转换为向量,和向量数据库的数据做比较,检…

个性化音乐推荐系统

python、pycharm、Django、Mysql都已经安装好了! 目录 2025/3/13 2025/3/13 一.打开CMD,安装Mysql驱动 pip install mysqlclient 二.项目初始化: 1.创建Django项目: django-admin startproject project1 cd project1 2.创…

面试高频#LeetCode#Hot100-字母异位词分组

题号链接 49. 字母异位词分组 - 力扣(LeetCode) 1首先定义map集合一个String对应一个String[]集合,遍历字符串数组 2对其先进行拆分,拆分为字符数组,再进行排序,再转为字符串 3如果key值没有就创建一个字符…

笔试刷题专题(一)

文章目录 最小花费爬楼梯(动态规划)题解代码 数组中两个字符串的最小距离(贪心(dp))题解代码 点击消除题解代码 最小花费爬楼梯(动态规划) 题目链接 题解 1. 状态表示&#xff1…

hcia华为路由器静态路由实验配置

目录 一、网络拓扑分析 二、华为路由器配置(分设备) 1. R1 配置 2. R2 配置 3. R3 配置 三、验证测试 拓扑图 一、网络拓扑分析 IP 地址规划: R1:E0/0/0(12.1.1.1/24)、E0/0/1(192.168.1.…

贪心算法和遗传算法优劣对比——c#

项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算: 第一局:{ 40, 1 }, { 11, 15…