2017-02-13 26 views
1

Я использовал следующую директиву в конфигурации nginx для перенаправления на внешний настраиваемый URL.Как перенаправить error_page на внешний URL с соответствующей схемой, прикрепленной в Nginx?

<location block> 
    : 
    allow 123.123.123.123; 
    deny all; 
    error_page 403 http://domain.com/unauthorized.html; 
    : 
</location block> 

Это работает, но я хотел бы сделать перенаправление на соответствующие https версию, если первоначальный запрос использует https схему.

Мой блок Nginx сервер обмена конфигурации как для порта 80 и 443.

server { 
    listen 80; 
    listen 443 ssl http2; 
     : 
     : 
} 

Я попытался следующие без успеха:

error_page 403 /unauthorized.html; давая мне содержание пользовательских страниц с оригинальным URL запроса пути в https (это хочу, я хочу, чтобы не показывать).

error_page 403 //domain.com/unauthorized.html;, дающий мне по умолчанию 404 Not Found страницу ошибки в https, то же, что и выше, раскрывая исходный адрес URL-адреса запроса в адресной строке.

Я хочу: http(s)://domain.com/admin/admin.php -> http(s)://domain.com/unauthorized.html

Как это может быть сделано без избыточного блока декларации сервера?

+0

Вы пробовали '$ схему: // domain.com/unauthorized.html' –

+0

Работает идеально, решите мою проблему мгновенно. Пожалуйста, напишите как ответ, и я буду рад принять его. – KDX

ответ

0

Переменная $scheme установлена ​​в http или https в зависимости от протокола, используемого для запроса.

allow 123.123.123.123; 
deny all; 
error_page 403 $scheme://domain.com/unauthorized.html; 

Подробнее см. this document.