Как настроить nginx для перенаправления всего запроса от доменных псевдонимов до основного домена?

разве это не означает, что Вы смогли бы скопировать его где-то в другом месте, таким образом позволив Вам выполнить его так или иначе?

Нет, это не корректно.

Существуют сценарии, когда Вы не можете выполнить файл, даже если он имеет исполняемый набор битов. Вот по крайней мере два из них:

  • ограниченная оболочка, которая явно запрещает выполнение
  • файловая система смонтирована с noexec опцией
5
задан 8 November 2012 в 12:02
3 ответа

Я думаю, что что-то в этом роде должно работать:

set $primary_domain "xxx.example.com";
if ($host != $primary_domain) {
    rewrite ^ $scheme://$primary_domain permanent;
}
1
ответ дан 3 December 2019 в 00:52

Самый эффективный и чистый способ сделать это - настроить два отдельных блока {} сервера: один для перенаправления, а другой (с каноническим именем) для фактической обработки запросов.

Пример конфигурация:

server {
    listen 80;
    listen 443 ssl;

    server_name xxx yyy.example.com $hostname;

    ssl_certificate ...
    ssl_certificate_key ...

    return 302 $scheme://xxx.example.com$request_uri;
}

server {
    listen 80;
    listen 443 ssl;

    server_name xxx.example.com;

    ssl_certificate ...
    ssl_certificate_key ...

    ...
}

Документация:

22
ответ дан 3 December 2019 в 00:52

Вот вариант ансера Брентона Алкера, использующий переменную $ server_name для повторного использования значения директивы server_name .

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^ $scheme://$server_name permanent;
    }

Или, чтобы сохранить любые параметры запроса:

    server_name primary.tld secondary.tld;
    if ($host != $server_name) {
        rewrite ^/(.*) $scheme://$server_name/$1 permanent;
    }

Здесь $ server_name относится к имени основного сервера, которое является первым именем в директиве server_name , а $ host относится к имени хоста, указанному в HTTP-запросе.

Обратите внимание, что оператор if в конфигурации nginx не всегда делает то, что вы ожидаете, и некоторые не одобряют его использование. См. Также https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

1
ответ дан 3 December 2019 в 00:52

Теги

Похожие вопросы