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

如何配置GCP虚拟机上的Flask服务器通过域名访问?解决443端口占用问题

解决GCP虚拟机中Flask服务443端口被占用的域名访问问题

针对你遇到的443端口被占用、无法通过绑定域名访问Flask服务的问题,提供以下几种可行解决方案:

方案一:修改Flask端口 + Nginx反向代理(推荐)

这是生产环境最常用的方式,既解决端口占用问题,又能通过Nginx处理HTTPS证书、提升服务稳定性。

  1. 修改Flask服务端口
    调整代码中app.run的端口参数,改为非特权端口(如8000):

    if __name__ == "__main__":
        app.run('0.0.0.0', 8000)
    
  2. 安装并配置Nginx

    • 在GCP虚拟机中安装Nginx:
      sudo apt update && sudo apt install nginx
      
    • 创建域名配置文件(如/etc/nginx/sites-available/your-domain.conf),填入以下内容(替换your-domain.com为你的域名,SSL证书路径根据实际情况调整):
      server {
          listen 443 ssl;
          server_name your-domain.com;
      
          ssl_certificate /path/to/your/certificate.crt;
          ssl_certificate_key /path/to/your/private.key;
      
          location / {
              proxy_pass http://127.0.0.1:8000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
      
    • 启用配置并重启Nginx:
      sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/
      sudo nginx -t && sudo systemctl restart nginx
      
  3. 后台运行Flask服务
    使用nohup让Flask服务持续运行:

    nohup python3 main.py &
    

方案二:停止占用443端口的进程

如果占用443的进程是你不需要的服务,可以直接停止它:

  1. 查找占用443端口的进程:
    sudo lsof -i :443
    # 或
    sudo netstat -tulpn | grep 443
    
  2. 根据输出的PID停止进程:
    sudo kill <PID>
    # 如果是系统服务(如Nginx),用服务命令停止
    sudo systemctl stop nginx
    

⚠️ 注意:停止前确认该进程并非关键服务,避免影响虚拟机其他功能。

方案三:端口转发(临时应急)

通过iptables将443端口的流量转发到Flask使用的非特权端口(如8000):

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8000

⚠️ 此方法仅转发流量,若需要HTTPS访问,仍需在Flask中配置SSL证书,不如反向代理方案灵活。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:50:23