如何配置GCP虚拟机上的Flask服务器通过域名访问?解决443端口占用问题
解决GCP虚拟机中Flask服务443端口被占用的域名访问问题
针对你遇到的443端口被占用、无法通过绑定域名访问Flask服务的问题,提供以下几种可行解决方案:
方案一:修改Flask端口 + Nginx反向代理(推荐)
这是生产环境最常用的方式,既解决端口占用问题,又能通过Nginx处理HTTPS证书、提升服务稳定性。
修改Flask服务端口
调整代码中app.run的端口参数,改为非特权端口(如8000):if __name__ == "__main__": app.run('0.0.0.0', 8000)安装并配置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
- 在GCP虚拟机中安装Nginx:
后台运行Flask服务
使用nohup让Flask服务持续运行:nohup python3 main.py &
方案二:停止占用443端口的进程
如果占用443的进程是你不需要的服务,可以直接停止它:
- 查找占用443端口的进程:
sudo lsof -i :443 # 或 sudo netstat -tulpn | grep 443 - 根据输出的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
相关产品推荐
相关产品推荐

