You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

同一主机部署Flask与WordPress双框架:端口及路由分配技术问询

当然可以在同一台机器上同时部署Flask和WordPress!要解决80端口的分流问题,核心思路是用反向代理服务器(最常用的是Nginx)作为统一入口,根据URL路径把请求转发给对应的后端服务。下面是具体的实现步骤:

实现方案:Nginx反向代理分流

1. 先让两个服务监听非80端口

首先得让Flask和WordPress各自运行在独立的端口上,不要直接占用80:

  • WordPress:如果用Apache部署,修改Apache的端口配置(比如/etc/apache2/ports.conf),把Listen 80改成Listen 8080,重启Apache。如果是Nginx+PHP-FPM的WordPress架构,直接让WordPress的Nginx配置监听8080即可。
  • Flask:不要用自带的开发服务器(仅用于测试),用生产级的应用服务器比如Gunicorn启动,绑定到本地5000端口:
    gunicorn -w 4 -b 127.0.0.1:5000 your_flask_app:app
    
    your_flask_app是你的Flask应用文件名,app是Flask实例名)

2. 配置Nginx作为统一入口

安装Nginx后,编辑主配置文件或者新建一个站点配置(比如/etc/nginx/sites-available/mydomain.conf),添加以下内容:

server {
    listen 80;
    server_name www.myDomain.com;

    # 转发/page1路径到WordPress服务
    location /page1 {
        proxy_pass http://localhost:8080;
        # 传递必要的请求头,确保后端服务能正确识别请求
        proxy_set_header Host $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 $scheme;
    }

    # 转发/page2路径到Flask服务
    location /page2 {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $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 $scheme;
    }

    # 可选:根路径默认转发到WordPress(根据你的需求调整)
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $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 $scheme;
    }
}

3. 激活配置并验证

  • 激活站点配置(如果是新建的文件):
    ln -s /etc/nginx/sites-available/mydomain.conf /etc/nginx/sites-enabled/
    
  • 检查Nginx配置语法是否正确:
    nginx -t
    
  • 如果没问题,重启Nginx生效:
    systemctl restart nginx
    

注意事项

  • WordPress路径适配:如果WordPress的内容都在/page1下,要在WordPress后台的“设置→常规”里,把“站点地址(URL)”和“WordPress地址(URL)”设置为http://www.myDomain.com/page1,避免内部跳转错误。
  • Flask路由匹配:确保Flask的路由对应/page2或者其子路径,比如:
    @app.route('/page2')
    def page2():
        return "This is Flask's page2"
    
    @app.route('/page2/subpage')
    def page2_sub():
        return "Subpage under Flask's page2"
    
  • 端口冲突排查:如果启动服务时提示端口被占用,用netstat -tulpn | grep 端口号查看占用进程,调整端口即可。

这样配置后,用户访问www.myDomain.com/page1就会被转发到WordPress,访问www.myDomain.com/page2则会被转发到Flask,完美实现同一端口下的路径分流。

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

火山引擎 最新活动