web-dev-qa-db-ja.com

Nginx:IPアドレスをドメイン名にリダイレクト

次の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/ to http://isitmaintained.com/ ですが、この構成を展開するとRedirect loopまたはこれらのリンクの両方。

何が悪いのですか?

12
Matthieu Napoli

2番目のブロックでこれを試してください:

server {
    listen 80;
    server_name 178.62.136.230;

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

問題は、2番目のサーバーブロックのlistenディレクティブが最初のサーバーブロックよりも具体的であるため、常に使用されることです。そして、2番目のブロックはそのlisten仕様の唯一の仮想ホストであるため、常に使用されます。

30
Tero Kilkanen

あなたは近くにいた。あなたが探しているその書き直し。

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.
}
3
ticoombs