Nginx: Redirect alamat IP ke nama domain


12

Dengan konfigurasi Nginx berikut:

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;
}

Saya mencoba mengalihkan http://178.62.136.230/ke http://isitmaintained.com/ tetapi ketika saya menggunakan konfigurasi ini saya berakhir dengan salah satu Redirect loopatau kedua tautan tersebut.

Apa yang saya lakukan salah?

Jawaban:


30

Coba ini di blok kedua:

server {
    listen 80;
    server_name 178.62.136.230;

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

Masalahnya adalah bahwa listendirektif blok server kedua lebih spesifik daripada blok server pertama, oleh karena itu selalu digunakan. Dan karena blok kedua adalah satu-satunya host virtual untuk listenspesifikasi itu, selalu digunakan.


Itu masuk akal. Tetapi ketika saya menerapkan ini, saya mendapatkan kesalahan berikut: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:( Dan itu tidak masuk akal karena nama domain saya tidak terlalu lama.
— Matthieu Napoli

Nah, karena alasan tertentu pengaturan Anda memerlukan lebih banyak ruang penyimpanan untuk nama server virtual host di nginx, jadi Anda harus menambah pengaturan saja.
— Tero Kilkanen

Saya minta maaf karena tidak mencoba secara langsung, saya yakin ada sesuatu yang salah. Tapi Anda benar, pengalihan berfungsi sekarang! Terima kasih banyak :)
— Matthieu Napoli

Anda adalah F ***** orang yang tepat, memecahkan masalah saya,
— terbalik

3

Anda sudah dekat. Menulis ulang yang Anda cari.

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
Ini rewritedan di returnatas melakukan hal yang persis sama.
— Tero Kilkanen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.