Nginx代理:根请求的重写规则

  发布于 2022-12-07 11:25

我在端口80上安装了nginx,在nginx后面的端口2368上安装了节点应用程序

nginx配置看起来像这样

server {
    server_name domain.com www.domain.com;
    listen 80; 
    location / {
        proxy_pass http://localhost:2368;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    } 
}

此配置完全按预期工作.例如/请求变成http://localhost:2368/,/post/mypost变成http://localhost:1234/post/mypost等等.

我想要的是只有/请求变成了http://localhost:2368/latestpost/.所有其他请求的处理方式与上面的示例相同.日Thnx!

1 个回答
  • 你可以使用rewrite指令:

    server {
        server_name domain.com www.domain.com;
        listen 80; 
        location / {
            rewrite ^/$ /latestpost/ break;
            proxy_pass http://localhost:2368;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffering off;
        } 
    }
    

    或在不同的位置:

    server {
        server_name domain.com www.domain.com;
        listen 80;
        location = / {
            rewrite ^.* /latestpost/;
        }
        location / {
            proxy_pass http://localhost:2368;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_buffering off;
        } 
    }
    

    第二个变体稍微高效,因为它不会尝试重写每个请求.但我猜,差异将是不明显的.

    2022-12-11 03:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有