Nginx正向代理非80端口服务

原创
2016/06/24 18:07
阅读数 4.1K

  默认情况下apache/nginx的正向代理,都默认访问的服务是常规的80端口,但是总有那么几个特殊服务是非80端口的,如果非要用正向代理来解决(用反向代理来解决更容易,但有时候服务场景限制只能使用正向代理),那么可以使用nginx+lua来解决:

**通过获取客户端请求的端口号,然后追加到要正向代理的地址上即可。 **

if ($http_host ~ "(:(\d){4})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-4);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host ~ "(:(\d){3})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-3);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host ~ "(:(\d){2})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-2);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host !~ :){
        proxy_pass http://$host$request_uri;
}
展开阅读全文
加载中
点击加入讨论🔥(3) 发布并加入讨论🔥
打赏
3 评论
2 收藏
1
分享
返回顶部
顶部