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://isitmaintained.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, поэтому вам просто нужно увеличить настройку.
Теро Килканен

Мои извинения за то, что не пытались напрямую, я был уверен, что что-то не так. Но вы были правы, перенаправление работает сейчас! Очень теплое спасибо :)
Матье Наполи

Вы правый мужик, решил мою проблему, проголосовал,
спасибо

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.