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

在云算力上使用Nginx对Gradio外链进行加速的方法

在Gradio中使用share=True会生成一个可用于分享的外链,可由于所有外链都走的是Gradio提供的服务器,所以生成的应用的响应速度会很慢,甚至到了影响正常使用的程度。Gradio官方文档中提供了使用Nginx的方法:链接。但现有的大部分算力集群没有使用systemd,而是使用s6作为进程管理工具,也就无法使用systemctl来实现一些常用操作。

可以使用下面的命令查看服务器的进程管理方式:

ps -p 1 -o comm=

如果输出为systemd,那么可以使用systemctl来实现Nginx的各项操作;如果输出为s6-svscan,可以参考本文的方式。

下面以我常用的算力平台FunHPC为例,开放端口8000,一定要确定你使用的平台支持暴露服务端口

整个过程可以概括为:在Ubuntu服务器上部署Nginx作为反向代理,配置Nginx监听一个特定的内部端口(8000),该端口已由FunHPC平台映射至公网地址(通过平台暴露端口),并将所有外部访问流量转发至在另一个内部端口(7860)上运行的Gradio应用。

安装sudo:

apt-get install sudo

更新apt包,安装Nginx:

sudo apt update
sudo apt install nginx

使用s6启动Nginx:

nginx -g 'daemon off;'

启动Nginx后这个终端窗口就被占用了,需要打开另一个终端继续下面的操作。

查看nginx状态:

sudo nginx -t

参考输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

在FunHPC开放8000端口,得到外链。

https://5awep1xoy9ga5urskya100.deepln.com:30499

创建Nginx站点配置文件:

sudo nano /etc/nginx/sites-available/your_gradio_app

Gradio的默认端口是7860,Nginx监听的端口是8000,所以配置文件中只需要根据你的应用需求修改client_max_body_size即可,文件内容:

server {listen 8000; # 在FunHPC平台上暴露的内部端口listen [::]:8000;access_log /var/log/nginx/gradio_8000.access.log;error_log /var/log/nginx/gradio_8000.error.log;client_max_body_size 20M; # 客户端最大上传文件大小location / { # 直接通过平台提供的外链访问proxy_pass http://127.0.0.1:7860/; # Gradio运行的端口proxy_buffering off;proxy_redirect off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $http_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 https;proxy_set_header X-Forwarded-Host $http_host; }
}

启用站点配置:

sudo ln -s /etc/nginx/sites-available/your_gradio_app /etc/nginx/sites-enabled/

找到现在的Nginx进程并关闭:

ps aux | grep "nginx: master process"

一般执行完上面的语句后会出现两个进程,例如:

root       3615  0.0  0.0  55316 12328 pts/1    S+   19:27   0:00 nginx: master process nginx -g daemon off;
root       7544  0.0  0.0   4072  2072 pts/2    S+   19:42   0:00 grep --color=auto nginx: master process

关闭带有daemon off的这一个:

sudo kill -QUIT 3615

重新启用nginx

nginx -g 'daemon off;'

启动Gradio应用

使用Nginx代理后,Gradio应用中不需要使用share=True

demo.launch(share=False,server_name="0.0.0.0",server_port=7860)

Gradio应用启动成功后,就可以访问https://5awep1xoy9ga5urskya100.deepln.com:30499了。

其它(域名)

如果自己手下有域名,想要通过域名方便地访问自己创建的Gradio应用,可以通过在域名解析处通过CNAME将平台提供的外链映射到自己的域名,但是需要配置证书,可以先浏览一下平台是否提供了配置证书的用户接口,如果没有的话可以咨询平台运维人员,让他们来配置。

http://www.xdnf.cn/news/14028.html

相关文章:

  • 趣解TensorFlow之入门篇
  • 家政维修平台实战25:工人接单
  • Could not initialize Logback logging from classpath:logback-spring.xml
  • PostgreSQL作为向量数据库
  • 论索引影响性能的一面④ 索引失踪之谜【上】
  • docker部署DNS服务并带有图形界面管理——筑梦之路
  • 【碎碎念】60秒! 卡牌游戏 60 Seconds! [特殊字符] 桌游版《求生60秒》
  • 人工智能100问☞第47问:为啥AI需要“反向传播”?
  • Spring Bean
  • aardio 继承与多态
  • 智能出入库管理系统:自动化管控平台
  • 我是如何用 Agent 编程的
  • Day01_C数据结构
  • 普通属性 vs ref 包装属性
  • C#迭代器
  • xa_get_mark 简介
  • PyCharm 配置python解释器
  • 跨网软件如何重塑能源行业?推荐高效协同的跨网传输方案
  • 在python中获取符合特定模式的文件
  • 《Java开发工具全解析:从基础到前沿》
  • MySQL数据库死锁全解析:发生场景、定位方法、解决方案及最佳实践
  • 京东率先开启“3D信息流时代” 让购物更有趣
  • TortoiseSVN 下载指定版本客户端及对应翻译(汉化)包
  • ABP vNext + OpenIddict:自定义 OAuth2/OpenID Connect 认证策略
  • 搭建前端项目 Vue+element UI引入 步骤 (超详细)
  • 2025年第二届仿真与电子技术国际学术会议(ICSET 2025)
  • 用 PlatformIO + ESP-IDF 框架开发 ESP32
  • OB Cloud × 海牙湾:打造高效灵活的金融科技 AI 数字化解决方案
  • 安科瑞中小工商业储能监测-能量管理系统Acrel-2000ES
  • SAP 生产订单报工检查报错异常(接口)