subdomain nginx menulis ulang

8

Namun pertanyaan aturan nginx menulis ulang

Bagaimana saya bisa menulis ulang dari http://www.*.domain.comke http://*.domain.com?

Terima kasih sebelumnya

- Deb

EDIT:

Maaf saya tidak melihat format tekstil menghapus * dari pertanyaan saya. Saya memperbaikinya sekarang. Yang perlu saya lakukan adalah pergi dari www.joe.domain.com ke joe.domain.com, di mana joe bisa menjadi kata apa pun.

deb
sumber

Jawaban:

7

Apa pentingnya periode tambahan sebelum domain.com? Apakah tujuannya untuk menghapus www dari URL? Jika demikian, ini harus dilakukan triknya:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}

Jangan lupa untuk: sudo /etc/init.d/nginx restartmemuatnya

Sumber: NGINX Wiki

iainlbc
sumber
Maaf saya tidak melihat format tekstil menghapus * dari pertanyaan saya. Yang perlu saya lakukan adalah pergi dari www.joe.domain.com ke joe.domain.com, di mana joe bisa menjadi kata apa pun. Jadi Anda benar, saya hanya perlu menghapus www.
deb
12

Itu sedikit peretasan.

Cara tercepat untuk kinerja yang bijaksana

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}

Anda menyimpan pertandingan regex serta dua tangkapan ditambah Anda mendapatkan keuntungan dari nginx menggunakan tabel hash untuk mencari blok server yang cocok.

Selain itu, Anda tidak perlu memulai ulang nginx - hanya perlu memuat ulang, dan siapa pun yang ingin memiliki lebih banyak waktu henti daripada yang diperlukan?

Martin Fjordvald
sumber
+1 masuk akal ... tepuk tangan
iainlbc
1
Ini bukan hack. Nginx melakukan pencarian sangat cepat melalui nama server, jadi ini benar-benar pendekatan tercepat.
Alexander Azarov
1
@Alaz Itu sebagai jawaban atas jawaban yang diberikan oleh iainlbc, maksud saya jika kondisinya hack, bukan server yang saya cari.
Martin Fjordvald
1

Solusi Martin F baik-baik saja, sampai Anda memiliki ratusan domain. Namun, saya akan menyarankan sebaliknya - melayani aplikasi di www.joe.domain.com, dan mengalihkan dari joe.domain.com. Cukup yakin itu ada di RFC.

Justin Alan Ryan
sumber
Jika Anda memiliki nginx handle yang banyak domain, maka tulis skrip untuk menghasilkan konfigurasi. Ini adalah bahasa konfigurasi yang cukup lurus ke depan dan Anda benar-benar tidak ingin melakukan parsing regex pada setiap beban halaman pada server traffic tinggi.
Martin Fjordvald
Pada prinsipnya, mungkin, tetapi apakah Anda sudah membuat profil? Saya sudah memiliki beberapa situs beban yang sangat tinggi menggunakan regex untuk semua permintaan. Itu membutuhkan perawatan. Juga, banyak lingkungan hosting bersama tidak memiliki masalah kinerja yang serius, tetapi memiliki masalah overhead manajemen. Kedua solusi dapat bekerja dengan baik di dalam paramaters yang berbeda.
Justin Alan Ryan
Jika Anda memiliki ratusan domain, gunakan regexp di server_name: stackoverflow.com/questions/2498712/nginx-subdomain-rewrite
Alexander Azarov