apakah mungkin untuk melakukan hal seperti ini dengan nginx?
if ( $http_user_agent = "wget" ){
server {
listen 11.11.11.11:1111;
root /website1/;
server_name example.com www.example.com;
else
server {
listen 22.22.22.22:22222;
root /website2/;
server_name example2.com www.example2.com;
}
linux
nginx
configuration
pengguna421936
sumber
sumber
Jawaban:
Modul penulisan ulang Nginx memang memiliki
if
arahan (lihat dokumentasi terkait untuk contoh), tetapi tidakelse
. Setara untukelse
akan semua yang tidak dimodifikasi denganif
.Anda bisa menggunakannya
if
di dalamserver { }
tetapi tidak sebaliknya. Anda bahkan tidak akan memiliki kondisi dibandingkan di jika Anda sebelum permintaan yang sudah membutuhkan server. Di sana, Anda hanya bisa menayangkan konten saat agen pengguna (atau tidak)wget
.Perhatikan juga bahwa Anda tidak boleh menggunakannya
if
di dalamlocation
karena mungkin tidak berfungsi seperti yang diinginkan (lihat Jika Ada Kejahatan ).sumber
Dalam bentuk yang diberikan itu tidak akan berfungsi: menguji HTTP User-Agent menyiratkan, bahwa permintaan sudah diterima. Itu hanya mungkin jika beberapa
server
blok sudah ditentukan. Apakah Anda benar-benar ingin memulai server baru tergantung pada string Agen-Pengguna dari permintaan yang Anda terima di tempat lain?Jika Anda hanya ingin menyajikan konten yang berbeda, mengarahkan ulang ke jalur yang berbeda, dll. Tergantung pada bagian dari permintaan seperti User-Agent, itu mungkin, misalnya dengan http://nginx.org/en/docs/http/ngx_http_rewrite_module. html
sumber