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.