「Nginx」- 反向代理常用配置(proxy_pass) @20210319

该笔记将记录:与 proxy_pass 有关的常见问题,以及使用配置

需求:通过不同的 URI 进行反向代理

Module ngx_http_proxy_module / proxy_pass
How to remove the path with an nginx proxy_pass - Server Fault
How can query string parameters be forwarded through a proxy_pass with nginx? - Stack Overflow

问题描述

1)访问 http://example.com/a/foo/auth 地址,则反向代理到 http://127.0.0.1:8443/foo/auth 地址
1)访问 http://example.com/b/foo/auth 地址,则反向代理到 http://127.0.0.1:8993/foo/auth 地址

解决方法

server {
    listen 80;
    server_name example.com;

    location /a/ {
        # 注意,一定要使用 http://127.0.0.1:8443/ 而不是 http://127.0.0.1:8443,否则 传递的 URL 将携带 /a/ 前缀
        # 参考文档对 proxy_pass 的描述(是否携带 URI 的区别)
        proxy_pass http://127.0.0.1:8443/;

        # 传递请求头(默认)
        proxy_pass_request_headers on;

        # 传递请求提(默认)
        proxy_pass_request_body on;
    }

    location /b/ {
        proxy_pass http://127.0.0.1:8993/;
    }

    location / {
        return 404;
    }
}

当然,还有其他配置方法,比如 rewrite正则表达式匹配 location 等等。

注意事项,如果在 location 中使用正则表达式匹配的方式,需要自行处理 GET 参数问题。如下配置:

server {
...
    location ~ ^/a/(.*)$ {
        proxy_pass http://127.0.0.1:7011/$1$is_args$args;
    }
...
}

参考文献

DNS for Service Discovery with NGINX and NGINX Plus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值