本站文章总数为:165
Search Posts

nginx二级目录多层反向代理的配置处理记录

内容纲要

合作方部署项目是在一个外网k8s上,根据服务生成访问地址 比如服务gmt 生成类似地址 ku0.cc/gmt 这样去访问,然后gmt服务里面的一些子服务code auth等 nginx里面的请求再反代.
反人类的是合作方k8s是通过网页平台化部署的,没有权限终端进入容器调试
所以没办法,只能本地布一个nginx /gmt 反代本地容器

然后出现问题了
NGINX配置

    server {
        listen       20191  ;
        listen       20190  ssl;
        server_name  ku0.cc;

        ssl_certificate       ku0.cc.pem;
        ssl_certificate_key   ku0.cc.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m; 

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on; 

location  /gmt {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_pass https://docker.ku0.cc;
        }
    }

结果请求https://ku0.cc:20190/gmt 是反代请求https://docker.ku0.cc/gmt
所以我加了个/

 proxy_pass https://docker.ku0.cc/;

然后
请求https://ku0.cc:20190/gmt 是反代请求https://docker.ku0.cc/
一级请求没问题
但是请求/gmt/code 会变成请求https://docker.ku0.cc/gmt//code
两个// 结果404了
最后使用重写配置解决 记录一下

    server {
        listen       20191  ;
        listen       20190  ssl;
        server_name  ku0.cc;

        ssl_certificate       ku0.cc.pem;
        ssl_certificate_key   ku0.cc.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m; 

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on; 

location  /gmt {
            rewrite ^/gmt(.*)$ $1 break;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_pass https://docker.ku0.cc;
        }
    }

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注