nginx 重写路由

nginx + gunicorn + flask的配置
现在我把 /demo 这个路由映射到 8088端口,怎么重写路由

server {
    listen 80;
    server_name my_server;
    
    location /demo {
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:8088;
                        
        rewrite ^/demo/(.*)$ /$1 last;
    }
}

但是这样写, localhost/demo还是不行,怎么处理

阅读 5.2k
3 个回答

访问下 my_server/demo 试试?

rewrite ^/demo/(.*)$ /$1 last;

改为

rewrite ^/demo/(.*)$ /$1 break;

last会对server块重新发起请求,break则使用当前location中的数据源

如果说你想

/demo代理到8088, /demo/xx代理到 8088/xx

的话,可能就需要这样了:

server {
    listen 80;
    server_name my_server;
    
    location / {
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:8088;
                        
        rewrite ^/demo/(.*)$ /$1 break;
    }
}

但是这种直接在你的后台程序中处理也就可以了,因为这样的结果就是访问/demo/xx和访问/xx是一样的效果了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题