Назад | Перейти на главную страницу

Правило перенаправления NGINX: подпапка только на HTTPS?

Я пытаюсь перенаправить всех, кто получает доступ к разделу администратора моего сайта, на его версию HTTPS. Текущее правило перезаписи выглядит следующим образом:

server {
        listen          80;
        server_name     domain.com;

        location / {
                index index.php index.html;
                root  /home/domain.com/public;
                }

        #Redirect Admin requests to secure server
        location /www/admin/  {
                rewrite ^/(.*) https://domain.com$1 permanent;
                }
}

Проблема с этим правилом в том, что это только пересылка http://domain.com/www/admin на HTTPS - собирается http://domain.com/www/admin/index.php, например, не перенаправляет. Есть идеи, как исправить это, чтобы что-нибудь НИЖЕ /www/admin тоже перенаправляется?

Прочтите четыре правила в статье вики, на которую ссылается AlexD. Расположение регулярных выражений (например, местоположение вашего PHP) имеет приоритет над обычными статическими местоположениями. Чтобы предотвратить это, вы хотите использовать ^~ отметьте свое статическое местоположение:

location ^~ /www/admin/ {
    rewrite ^ https://domain.com$request_uri? permanent;
}

РЕДАКТИРОВАТЬ: Кроме того, вы не должны устанавливать корень в местоположении /. Установите его на сервере, и пусть все ваши местоположения наследуют настройку. Видеть Подводные камни и распространенные ошибки 1.2

Обратитесь к документации nginx для описания директива местоположения. Вы должны использовать location вместо location =