nginx配置代理服务器

nginx配置反向代理规范

nginx中配置location代理转发规则的时候不同写法对应不同转发规则。

在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/表示绝对根路径;如果没有/表示相对路径,把匹配的路径部分也给代理走。

为方便理解将前端的框架代理设置与nginx的反向代理比较说明

以请求访问地址:http://127.0.0.1:8080/proxy/getuser为例

第一种配置

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy/ { # 接口反向代理配置 不携带proxy去请求
        proxy_pass http://192.123.0.102:9000/;
    }
}

相对路径

最后实际请求: http://192.123.0.102:9000/getuser

第二种配置

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy/ { # 接口反向代理配置 携带proxy去请求
        proxy_pass http://192.123.0.102:9000;
    }
}

绝对路径

最后实际请求: http://192.123.0.102:9000/proxy/getuser

第三种配置

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy/ { # 接口反向代理配置 携带proxy去请求
        proxy_pass http://192.123.0.102:9000/api/;
    }
}

相对路径

最后实际请求: http://192.123.0.102:9000/api/getuser

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy { # 接口反向代理配置 携带proxy去请求
        proxy_pass http://192.123.0.102:9000/api;
    }
}

最后实际请求: http://192.123.0.102:9000/api/getuser

第四种配置

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy/ { # 接口反向代理配置 携带proxy去请求
        proxy_pass http://192.123.0.102:9000/api;
    }
}

相对路径

最后实际请求: http://192.123.0.102:9000/apigetuser

第五种配置与第二种类似

server {
    listen 8080;
    server_name 127.0.0.1;
    location /proxy { # 接口反向代理配置 携带proxy去请求
        proxy_pass http://192.123.0.102:9000;
    }
}

相对路径

最后实际请求: http://192.123.0.102:9000/proxy/getuser

应用 对比webpack的本地代理与nginx的反向代理

dev: {
    // 接口全路径:request('http://192.123.0.102:9090/market-api/data/media/mainList')
    '/market-api': {
        target: 'http://192.123.0.102:9090',
        changeOrigin: true,
        pathRewrite: {
            // '^/proxy': '', // proxy 替换 ''  意味着请求不带proxy
            // 对应nginx配置
            // location /proxy/ {  代理将proxy字符去后掉拼接上proxy后面的接口地址
            //      proxy_pass   http://192.168.4.121:9090/;
            // }

            '^/proxy':'proxy' // proxy 替换 'proxy'  意味请求携带proxy
            // 对应nginx配置
            // location /proxy {  代理带着proxy拼接上后面的接口地址
            //      proxy_pass   http://192.168.4.121:9090;
            // }
            // 或
            // location /proxy/ {  代理带着proxy拼接上后面的接口地址
            //      proxy_pass   http://192.168.4.121:9090;
            // }
        }
    }
}
全部评论(0)