2016-09-01 2 views
1

Я хочу преобразовать следующий конфигуратор Apache в конфигурацию, совместимую с Nginx.Преобразование Apache RewriteCond в Nginx

В настоящее время он перенаправляет весь трафик, который НЕ содержит ^/nexus/content * в uri для HTTPS. Это означает, что даже если я получаю доступ только к http: // example.com/nexus, он должен перейти на HTTPS.

В нижней строке я хочу сохранить http: // example.com/nexus/content* в HTTP, но http: // example.com/nexus должен перенаправить на HTTPS. Надеюсь, что вопрос ясен :)

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !^/nexus/content* 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Я пробовал следующие конфигурации Nginx, но пока не работал. Цените любую помощь.

if ($request_uri != ^/nexus/content*) { 
    rewrite (.*) https://example.com$request_uri; 
} 

И

location ~ ^/nexus/content* { 
} 

location/{ 
    rewrite ^(.*)$ https://$http_host$request_uri redirect; 
} 

ответ

1

Я не уверен, если это будет работать, но здесь идет:

server { 
     listen   80; 
     server_name example.com; 
     if ($request_uri !~ "^/nexus/content*") { 
      return  301 https://$server_name$request_uri; 
     } 
} 

server { 
     listen   443 ssl; 
     server_name example.com; 
     add_header Strict-Transport-Security "max-age=31536000"; # MiTM Mitigation 
     // your normal rules here 
} 

похожа на вашу, но это делает редирект и не перепишем.

+0

Спасибо Бурхан. Он просто работал, как ожидалось! : D –

Смежные вопросы