Nginx作为代理:如何在https下而不在http下排除特定文件夹

时间:2019-05-26 15:35:54

标签: nginx mod-rewrite nginx-config

我可以将某些特定的http文件夹重写为https文件夹,但是除了这些特定的文件夹,我无法将所有https从https重写为http;我陷入了困境

使用NGinx 1.12作为代理,同时处理http和https

我有一个服务器部分来处理http 80,一个服务器部分来处理https(我知道它们可以在同一部分中在一起)。

他们俩都是以这种方式开始的 location / { proxy_pass

server { listen 80; 我有 location ~ ^/(xxx|yyy|zzz)/.*$ { rewrite ^ https://www.example.com$uri permanent; } 每当我进入http时,它将xxx,yyy和zzz文件夹重定向到https很好。到目前为止,一切都很好。

但在server { listen 443 ssl;下 ,我想将xxx,yyy,zzz文件夹以外的所有内容重定向到http。

我确实尝试在https部分进行相反的操作,这意味着: location / { rewrite ^ http://www.example.com$uri permanent; }location ~ ^/(xxx|yyy|zzz)/.*$ { #do nothing } 但它不起作用,我收到404错误或循环

1 个答案:

答案 0 :(得分:0)

我发现Nginx唯一的解决方案是代理,这使Apache能够处理其重定向。

所以, 一种。 nginx 80重定向到nginx 443特定的文件夹。 b。通过nginx 443将所有https重定向到apache 443,然后在apache 443 conf中我进行测试(如果是特定文件夹,则停止),否则我将重定向到nginx 80。

它正在工作,但是我确定可以让nginx处理它并避免此1循环。如果有人作为一个漂亮的答案:-)