Hanya catatan bahwa ini tidak berfungsi untuk pengaturan Magento. Masih menyelidiki alasannya tapi saya pikir itu ada hubungannya dengan string kueri.
Jauder Ho
location / wordpress harus berguna ketika Anda memiliki wordpress di subdirektori bernama "wordpress". Bagaimana ketika kita memiliki wordpress di root web "/"?
rahul286
Jawaban:
21
Cara menggabungkan blok HTTP dan HTTPS.
server {
listen 80;
listen 443 default ssl;
# other directives
}
Ini diposting sebagai jawaban untuk pertanyaan yang berbeda. Lihat di sini .
Secara umum, menggunakan "jika" adalah praktik yang buruk (menurut penulis nginx). jika memungkinkan, lebih baik menggunakan try_file dari arahan error_page sebagai gantinya "jika (-f ...)"
Menggabungkan tip dengan file maintenence.html dan tip dengan try_files kita dapatkan:
lokasi / {
try_files /maintenance.html $ uri $ uri / @wordpress;
}
Ketika pemeliharaan berakhir, cukup mv maintenance.html dari $ root.
Ini tidak ideal karena /maintenance.html akan disajikan sebagai tanggapan 200. Anda mungkin ingin mesin pencari mengenali bahwa halaman pemeliharaan bukanlah situs web Anda yang sebenarnya. Anda mungkin ingin mengembalikan 503 (Layanan Sementara Tidak Tersedia). Satu-satunya cara saya mengetahui cara melakukan ini adalah dengan if (-f ...) { return 503; }dan error_page 503 /maintenance.html. Bagaimana menurut anda?
Aaron Gibralter
11
Konfigurasikan nginx untuk menggunakan cipher SSL yang lebih kuat. Secara default, SSLv2 diaktifkan (yang harus dinonaktifkan jika memungkinkan).
Bisakah Anda memberikan contoh dunia nyata untuk ini? Saya masih belum sepenuhnya mengerti bagaimana ini berguna.
Pengembang Pixel
1
@ The Pixel Developer, hanya sangat berguna untuk kecepatan. Nginx menyimpan data untuk gif kosong dalam memori sehingga tidak perlu memuat dari disk.
Tidak diketahui
5
juga access_log off;untuk lokasi tersebut adalah praktik umum
SaveTheRbtz
6
Kami mengatur Nginx dengan Chef, menggunakan buku resep ini yang berisi skrip untuk menangani konfigurasi nginx mirip dengan bagaimana Debian melakukan Apache2, dan juga beberapa templat contoh dengan standar waras.
Berikut adalah metode yang baik untuk mengembalikan halaman pemeliharaan. Semua permintaan ditulis ulang dan kode http yang benar dikembalikan. (503 Layanan tidak tersedia)
Sebenarnya, saya tidak setuju - saya menambahkan komentar ke serverfault.com/questions/18994/nginx-best-practices/… . Pada dasarnya, Anda ingin mengembalikan kesalahan 503 atau bot dan pengindeks akan menganggap halaman pemeliharaan Anda adalah bagian dari situs Anda yang sebenarnya ... Tidak ada yang salah dengan ifpernyataan jika Anda menggunakannya dengan benar - dokumen mengatakan bahwa ifs aman jika Anda sedang dilakukan return xxx;.
Apakah contoh Anda hanya berfungsi untuk permintaan dengan vhost yang tidak ditentukan atau apakah itu juga berfungsi dengan permintaan dengan vhost yang tidak dikenal (salah)?
Benoit
@Benoit berfungsi untuk apa pun yang tidak didefinisikan.
Tidak diketahui
Apakah "server_name _ *" tidak didukung nginx 0.7 dan seterusnya?
rahul286
1
Harap dicatat ini hanya sebagian benar. "" akan menangkap tajuk Host HILANG, tetapi itu tidak akan menangkap permintaan dengan tajuk Host yang tidak cocok dengan apa pun. Jika Anda ingin catch-all server block kemudian lihat flag default_server di bawah directive listen.
Martin Fjordvald
3
Saya juga memposting beberapa waktu yang lalu tentang cara menangani kompresi gzip dengan nginx dengan benar karena browser yang lebih lama mungkin memiliki masalah dengan pernyataan blanket gzip. HTH.
Saya tidak tahu apakah ini adalah praktik terbaik, tapi pasti peretasan yang rapi untuk mendapatkan kondisi bersarang di nginx. Ini contoh dari wiki nginx .
location /xxxx/ {
set $test "";
if ($request_method = POST) {
set $test P;
}
if ($http_cookie ~* "CCCC=.+(?:;|$)" ) {
set $test "${test}C";
}
if ($test = PC) {
#rewrite rule goes here.
}
}
Saya memasukkannya ke dalam kategori "latihan yang jelek tapi kadang-kadang perlu" - tentu saja bukan sesuatu yang harus didorong.
womble
2
Jika Anda perlu membalik secara kontekstual antara http dan https untuk subdomain yang ditangani oleh blok server yang sama, Anda dapat menggunakan variabel untuk melakukannya. Mungkin bukan cara yang paling efisien untuk melakukan sesuatu, tetapi ia bekerja:
server {
server mysite.tld ~^.+\.mysite\.tld$;
set $req_ssl = 0;
map $host $files {
default common;
mysite.tld common;
www.mysite.tld common;
admin.mysite.tld admin;
system.mysite.tld system;
*.mysite.tld users;
}
root /var/www/mysite/$files;
if ( $files = "admin" ){
set $req_ssl 1;
}
if ( $files = "common" ){
set $req_ssl 2;
}
if ( $scheme = http )
{
set $req_ssl $req_ssl.1;
}
if ( $scheme = https )
{
set $req_ssl $req_ssl.2;
}
if ($req_ssl = 1.1){
rewrite ^ https://$host$uri;
}
if ($req_ssl = 2.2){
rewrite ^ http://$host$uri;
}
}
Saya selalu mencoba menggunakan rootarahan di bagian atas blok server sehingga saya dapat mengambil keuntungan dari $document_rootvariabel dan tidak pernah, tetapi tidak pernah, termasuk rootarahan di dalam blok lokasi.
The Pitfalls Halaman dari Nginx wiki memiliki beberapa tips besar tentang praktik terbaik.
Jika Anda menggunakan nginx sebagai proxy, menyesuaikan pengaturan batas waktu bisa penting untuk memastikan Anda tidak memiliki koneksi nginx drop sebelum aplikasi Anda selesai, terutama jika Anda berurusan dengan aplikasi lalu lintas tinggi:
Jawaban:
Cara menggabungkan blok HTTP dan HTTPS.
Ini diposting sebagai jawaban untuk pertanyaan yang berbeda. Lihat di sini .
sumber
Sejauh ini, kiat-kiat terbaik yang pernah saya lihat berasal dari penulis di halaman perangkapnya: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
sumber
Secara umum, menggunakan "jika" adalah praktik yang buruk (menurut penulis nginx). jika memungkinkan, lebih baik menggunakan try_file dari arahan error_page sebagai gantinya "jika (-f ...)"
Menggabungkan tip dengan file maintenence.html dan tip dengan try_files kita dapatkan:
Ketika pemeliharaan berakhir, cukup mv maintenance.html dari $ root.
sumber
if (-f ...) { return 503; }
danerror_page 503 /maintenance.html
. Bagaimana menurut anda?Konfigurasikan nginx untuk menggunakan cipher SSL yang lebih kuat. Secara default, SSLv2 diaktifkan (yang harus dinonaktifkan jika memungkinkan).
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
sumber
Sering kali lebih efisien untuk menggunakan
map
arahan sebagai ganti ekspresi reguler saat mengganti root untuk subdomain yang cocok:sumber
The
empty_gif
Modul ini juga sangat berguna, terutama jika Anda perlu tanggapan monitor dari webserver (menggunakan nagios / monit / etc):sumber
access_log off;
untuk lokasi tersebut adalah praktik umumKami mengatur Nginx dengan Chef, menggunakan buku resep ini yang berisi skrip untuk menangani konfigurasi nginx mirip dengan bagaimana Debian melakukan Apache2, dan juga beberapa templat contoh dengan standar waras.
sumber
Berikut adalah metode yang baik untuk mengembalikan halaman pemeliharaan. Semua permintaan ditulis ulang dan kode http yang benar dikembalikan. (503 Layanan tidak tersedia)
sumber
if
pernyataan jika Anda menggunakannya dengan benar - dokumen mengatakan bahwaif
s aman jika Anda sedang dilakukanreturn xxx;
.location = /maintenance.html { break; }
perlu?Dari nginx 0.7.12 dan yang lebih baru, "" dapat digunakan di server_name untuk menangkap permintaan tanpa header "Host".
Anda dapat menggunakan yang berikut ini sebagai catchall untuk host virtual yang tidak terdefinisi.
sumber
Saya juga memposting beberapa waktu yang lalu tentang cara menangani kompresi gzip dengan nginx dengan benar karena browser yang lebih lama mungkin memiliki masalah dengan pernyataan blanket gzip. HTH.
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
sumber
Saya tidak tahu apakah ini adalah praktik terbaik, tapi pasti peretasan yang rapi untuk mendapatkan kondisi bersarang di nginx. Ini contoh dari wiki nginx .
sumber
Jika Anda perlu membalik secara kontekstual antara http dan https untuk subdomain yang ditangani oleh blok server yang sama, Anda dapat menggunakan variabel untuk melakukannya. Mungkin bukan cara yang paling efisien untuk melakukan sesuatu, tetapi ia bekerja:
sumber
Saya selalu mencoba menggunakan
root
arahan di bagian atas blok server sehingga saya dapat mengambil keuntungan dari$document_root
variabel dan tidak pernah, tetapi tidak pernah, termasukroot
arahan di dalam blok lokasi.The Pitfalls Halaman dari Nginx wiki memiliki beberapa tips besar tentang praktik terbaik.
sumber
Jika Anda menggunakan nginx sebagai proxy, menyesuaikan pengaturan batas waktu bisa penting untuk memastikan Anda tidak memiliki koneksi nginx drop sebelum aplikasi Anda selesai, terutama jika Anda berurusan dengan aplikasi lalu lintas tinggi:
sumber
Apakah Anda melihat ke sini?
http://www.directadmin.com/forum/showthread.php?p=137288
sumber