目前平台只支持开放8080端口对外访问,如果您需要暴露多个容器内的服务(http 服务),那么可采用代理的方式是做一层路由转发实现,如使用 Nginx 转发等功能来实现。下面就介绍如何使用Nginx实现转发:
1、 安装 nginx
```
sudo apt update
sudo apt install nginx -y
pip install flask --ignore-installed blinker
2、启动需转发的服务
示例:
这里先用flask创建两个简单的程序,用来模拟您需开放端口的服务。创建两个文件 app2000.py、app2001.py,让它们分别占用2000端口和2001端口。
app2000.py
`
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Im port 2000'
if __name__ == '__main__':
# 启动服务,监听所有地址的 2000 端口
app.run(host='0.0.0.0', port=2000)
``
app2001.py
`
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Im port 2001'
if __name__ == '__main__':
# 启动服务,监听所有地址的 2001 端口
app.run(host='0.0.0.0', port=2001)
``
然后启动这两个服务(&表示放在后台执行):
``
python app2000.py &
python app2001.py &
3、编辑nginx配置文件
新建配置文件 myproxy并通过下面代码进入编辑:
``
vim /myproxy
针对上面运行的两个程序服务,配置文件可如下:
`
server {
listen 8080;
# 代理 /v1/ 路径到本地 2000 端口
location /v1/ {
proxy_pass http://127.0.0.1:2000/; # 目标服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 代理 /v2/ 路径到本地 2001 端口
location /v2/ {
proxy_pass http://127.0.0.1:2001/; # 目标服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
`
然后保存文件退出,用下列命令将配置文件链接到nginx(注意您创建/myproxy文件所处的路径是否有误)
``
ln -s /myproxy /etc/nginx/sites-enabled/ #将前一步创建的配置文件链接到nginx下
删除默认配置(可选):
``
rm /etc/nginx/sites-enabled/default
4、启动Nginx开始转发
``
nginx -g "daemon off;" # 将Nginx放前端启动(直接使用nginx运行可能出现僵尸进程)
nginx -s reload # 重新加载配置文件:如果以后有修改过配置文件后,就需重新加载
此时可以查看是否在监听8080端口:
``
ss -tlnp | grep 8080
如果想要检查nginx是否运行:
``
ps aux | grep nginx
5.验证:
可在终端中输入以下命令进行验证
`m port 2000
curl http://localhost:8080/v1/ # 应返回:I
curl http://localhost:8080/v2/ # 应返回:Im port 2001`
也可浏览器中访问(需在平台开放端口,并且获取到对应链接):
``
http://xn-a.suanjiayun.com:56585/v1/
http://xn-a.suanjiayun.com:56585/v2/
此时如果访问页面出现以下内容即为成功:

实践示例:
具体怎么替换为自己的服务:现在我需要将 /v1/替换为自己的服务:comfyui。/v2/保持不动
还是三个步骤:1.启动自己的服务。2.修改nginx配置文件。3.运行nginx
1、启动需要转发的服务:
(1)启动第一个服务:comfyui,注意设置ip(需要将host设置为0.0.0.0)和端口号(我这里设置为:2000),后面跟上 &放后台运行:

(2)启动第二个服务:继续运行之前 /v2/服务。

2、修改配置文件myproxy:
下面我将之前的/v1/修改为/comfy/,然后和上一步启服务的地址和端口对应起来,并且添加其它参数(一般下面的参数就能满足需求,可复制后按需修改),如下:

`
server {
listen 8080;
# 代理 /comfy/ 路径到本地 2000 端口
location /comfy/ {
proxy_pass http://127.0.0.1:2000/;
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-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
proxy_buffering off;
}
# 代理 /v2/ 路径到本地 2001 端口
location /v2/ {
proxy_pass http://127.0.0.1:2001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
`

3、启动Nginx
启动服务、修改配置文件后就可以启动Nginx开启转发。
```
nginx -g "daemon off;" #这个命令将Nginx放在前端运行,避免出现僵尸进程
最后按照上文教程:开放端口-->对外开放端口-->获取访问地址,然后在地址后面分别跟上/comfy/或/v2/即可访问不同服务。
