nginx中的URL前缀无效&引用;带地图

nginx中的URL前缀无效&引用;带地图,nginx,proxy,Nginx,Proxy,proxy\u pass如果我保留默认值,那么它就工作了http://127.0.0.1:9200取消注释, 但是下面的代码映射到~^/kibana dev时,代理通行证不起作用,如果我转到http://my.domain.com/kibana-dev user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept

proxy\u pass
如果我保留
默认值,那么它就工作了http://127.0.0.1:9200
取消注释, 但是下面的代码映射到
~^/kibana dev
时,
代理通行证不起作用,如果我转到
http://my.domain.com/kibana-dev

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}


http {

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    map $request_uri $target {
        #default http://127.0.0.1:9200;
        ~^/kibana-dev http://127.0.0.1:9200;
        ~^/kibana-test http://127.0.0.1:9100;
    }

    server {

        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        if ( $request_uri ~* ^/kibana-test ) {
        return 301 http://my.domain.com/_plugin/kibana;
        }

        if ( $request_uri ~* ^/kibana-dev ) {
        return 301 http://my.domain.com/_plugin/kibana;
        }

        location / {
        proxy_set_header X-Real-IP 1.2.3.4;
        proxy_http_version 1.1;
        proxy_set_header Connect "Keep-Alive";
        proxy_set_header Proxy-Connection "Keep-Alive";
        proxy_set_header Authorization "";
        proxy_pass $target;
        }

    }
}             
我还尝试:

map $uri $target {
        /kibana-dev http://127.0.0.1:9200;
    }
知道为什么吗?
谢谢

您的配置文件没有意义

如果您提供URI
http://my.domain.com/kibana-dev
,将执行
服务器
块:

return 301 http://my.domain.com/_plugin/kibana;
这将导致URI表示为
/\u plugin/kibana
。新URI由
位置/
块处理并执行:

proxy_pass $target;

此时,将参考
映射
以确定
$target
的值,该值是
默认值,因为
/\u plugin/kibana
与任何其他值都不匹配。

在参考
映射
之前,您的
if
块将URI更改为
/\u plugin/kibana
。因此,只会采用
默认值
的情况。谢谢,我认为服务器配置在http之后/map@RichardSmith所以它是这样的->如果块,映射块,位置?我看到服务器下不允许映射您的配置文件在语法上已经正确了。这毫无意义。它的工作原理是因为机器中的代理应用程序,如果有
/kibana dev
我想做的是,它会将值设置为
$target
,稍后我会在代理过程中使用它。谢谢,你知道有没有办法在服务器阻塞之前运行映射吗?服务器没有状态,因此,一旦
返回
,事务就完成了
nginx
无法知道原始URI是什么。为什么要将URI重写为
/\u plugin/kibana
?浏览器是否需要知道,或者这仅仅是为了更改上游服务的URI?很抱歉我的回复太晚,明天我将更新我的问题,并详细解释为什么我需要进行此解决方案而不是不同的位置,/example1/example2。谢谢。我发了一个新问题,你能帮忙吗?链接这里:,谢谢