Nginx: перенаправлення IP-адреси на доменне ім’я


12

З такою конфігурацією Nginx:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    server_name isitmaintained.com;

    ...
}

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230;

    add_header X-Frame-Options "SAMEORIGIN";

    return 301 $scheme://isitmaintained.com$request_uri;
}

Я намагаюся переадресувати http://178.62.136.230/на http://isitmaintain.com/, але коли я розгортаю цю конфігурацію, я отримую Redirect loopабо обидва ці посилання.

Що я роблю неправильно?

Відповіді:


30

Спробуйте це на другому блоці:

server {
    listen 80;
    server_name 178.62.136.230;

    return 301 $scheme://isitmaintained.com$request_uri;
}

Проблема полягає в тому, що listenдиректива другого блоку сервера більш конкретна, ніж перший серверний блок, тому вона завжди використовується. А оскільки другий блок є єдиним віртуальним хостом для цієї listenспецифікації, він завжди використовується.


Що має сенс. Але коли я застосовую це, я отримую таку помилку: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:( І це не має сенсу, оскільки моє доменне ім’я не так вже й довго.
Матьє Наполі

Ну, чомусь ваша настройка вимагає більше місця для зберігання імен віртуального хост-сервера в nginx, тому вам слід просто збільшити налаштування.
Tero Kilkanen

Вибачте за те, що не пробував прямо, я був впевнений, що щось не так. Але ви мали рацію, перенаправлення працює зараз! Дуже сердечне спасибі :)
Матьє Наполі

ти F ***** правий чоловік, вирішив мою проблему, підкреслив, thnx
a_m_dev

3

Ви були поруч. Його перепишіть, що ви шукаєте.

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230 isitmaintained.com;

    rewrite  ^/(.*)$  http://www.isitmaintained.com/$1 permanent;
}
server {
    listen 80;
    server_name www.isitmaintained.com;
    # Serve Stuff Here.
}

5
Це rewriteі returnвище роблять точно те саме.
Теро Кілканен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.