将Apache RewriteCond转换为Nginx

时间:2016-09-01 17:55:02

标签: apache nginx

我想将以下Apache配置转换为Nginx兼容配置。

它目前所做的是将所有在uri中包含^ / nexus / content *的流量重定向到HTTPS。这意味着即使我只访问http:// example.com/nexus,它也应该转到HTTPS。

底线是我想在HTTP中保持http:// example.com/nexus/content*但是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 个答案:

答案 0 :(得分: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 
}

与您的相似,但它会重定向而不是重写。