Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect 防止重定向到https和URI黑客nginx反向代理_Redirect_Docker_Nginx_Reverse Proxy - Fatal编程技术网

Redirect 防止重定向到https和URI黑客nginx反向代理

Redirect 防止重定向到https和URI黑客nginx反向代理,redirect,docker,nginx,reverse-proxy,Redirect,Docker,Nginx,Reverse Proxy,我在我的服务器上用nginx inside docker设置了一个反向代理,从那时起,所有请求都重定向到https,尽管我没有将所有位置都设置为https重定向 基本上,我想要的是能够使用反向代理为https和http提供服务。 此外,我希望能够动态重定向到不同的URI,例如,我希望将/bla2/foo/bar的所有路由设置为仅重定向到/bla2之后的路由 我试图得到的是,无论何时访问example.com/bla2/foo/bar,它都应该将其重定向到example.com/foo/bar,而

我在我的服务器上用nginx inside docker设置了一个反向代理,从那时起,所有请求都重定向到https,尽管我没有将所有位置都设置为https重定向

基本上,我想要的是能够使用反向代理为https和http提供服务。 此外,我希望能够动态重定向到不同的URI,例如,我希望将/bla2/foo/bar的所有路由设置为仅重定向到/bla2之后的路由 我试图得到的是,无论何时访问example.com/bla2/foo/bar,它都应该将其重定向到example.com/foo/bar,而不使用bla2部分

是否可以在同一配置文件上执行此操作? 什么会导致我的服务器将所有请求重定向到https 这是我的服务器nginx.conf

我想能够直接获取的内容,如果我把它放在浏览器没有任何重定向到https。
只有当我尝试访问example.com/bla2时,我才希望它是https而不是http所必需的,并且被重定向到不同的路径。

您需要为此使用正则表达式和捕获组

location ~* /bla2/(.*) {
    return 301 http://example.com:3004$1$is_args$args;
}
另一种方法是使用重写

rewrite ^/bla2/(.*)$ http://example.com:3004/$1 redirect;
如果您想将其透明地代理到example.com:3004 removing/bla2,那么应该使用

location /bla2/ {
   proxy_pass http://example.com:3004/;
}

尾部的斜杠/in/bla2/和http://example.com:3004/ 在这里非常重要

现在的问题是什么?还有3004上运行的是什么?NodeJS?我有两个不同的问题,一个是所有http重定向到http,无论我是否指向某个应用程序,另一个是路由问题,正如我上面提到的。我刚刚编辑了内容,希望现在更清楚。是的,如果您直接在浏览器中访问,则应用程序是node js appshttp://example.com:3004/ 然后重定向到https,这可能只是因为你的应用程序正在发送重定向。另外,请确保您清除浏览器缓存我放置的配置是否符合我的要求?从外观上看,我看不出任何问题,它应该满足您的要求如果您不介意在不使用重定向的情况下添加第三个选项,那么我可以接受答案,因为最终我选择了一个不使用重定向的选项,我想你知道我在说什么mean@user4860092,现在检查
location /bla2/ {
   proxy_pass http://example.com:3004/;
}