You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP单VM实例:将80/443端口转发至Streamlit的8501端口

单GCP VM实例实现80/443到8501端口转发(gcloud方案)

1. 配置GCP防火墙规则(允许外部访问80/443)

先通过gcloud创建允许HTTP/HTTPS流量的防火墙规则,并给目标VM打标签:

# 创建防火墙规则
gcloud compute firewall-rules create allow-http-https \
    --direction=INGRESS \
    --priority=1000 \
    --network=default \
    --action=ALLOW \
    --rules=tcp:80,tcp:443 \
    --source-ranges=0.0.0.0/0 \
    --target-tags=streamlit-server

# 给VM实例添加对应标签(替换实例名和区域)
gcloud compute instances add-tags YOUR_VM_NAME \
    --tags=streamlit-server \
    --zone=YOUR_VM_ZONE

2. 在VM内部配置端口转发(iptables)

直接在VM实例内用iptables实现端口映射,无需额外GCP组件:

# 临时启用IP转发(重启后失效)
sudo sysctl -w net.ipv4.ip_forward=1

# 永久启用IP转发(编辑配置文件)
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p

# 添加80→8501转发规则
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8501

# 添加443→8501转发规则
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8501

3. 保存iptables规则(防止重启丢失)

根据VM的操作系统选择对应命令:

  • Debian/Ubuntu:
sudo apt update && sudo apt install -y iptables-persistent
sudo netfilter-persistent save
  • RHEL/CentOS:
sudo yum install -y iptables-services
sudo service iptables save

注意事项

  • 如果需要HTTPS正常访问(浏览器不提示不安全),你需要给Streamlit配置SSL证书,或者用Nginx等反向代理处理SSL终结后再转发到8501。仅端口转发的话,443流量会直接转到未配置SSL的8501端口,导致HTTPS访问失败。
  • 验证配置:访问http://YOUR_VM_PUBLIC_IP和https://YOUR_VM_PUBLIC_IP,检查是否能正常打开Streamlit应用。

内容的提问来源于stack exchange,提问作者Fred Zimmerman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:22:41