Bagaimana mencegah nginx dari membalikkan subdirektori khusus proxy


11

Di Apache Anda dapat ProxyPass semuanya kecuali satu atau lebih subdirektori (dengan "!").

    ProxyPass /subdir !
    ProxyPass / http://localhost:9999/

Apa yang dimaksud dengan Nginx?

Tebakan pertama saya jelas tidak berfungsi:

 location /subdir {
      root /var/www/site/subdir;
  }

 location / {
      proxy_pass http://localhost:9999/ ;
  }

Jawaban:


11

Anda dapat mengikat proxy_pass untuk PERSIS jalur yang Anda suka, seperti ini

location = / {
    proxy_pass http://localhost:9999/;
}

Ini memastikan bahwa tidak ada jalan lain yang akan dilewati tetapi /

ATAU

Anda dapat menggunakan sintaks ini hanya untuk subdirektori yang cocok

location ^~ /subdir {
     alias /var/www/site/subdir;
}

location / {
    proxy_pass http://localhost:9999/ ;
}

The ^~cocok subdir dan kemudian berhenti searching sehingga /tidak akan dieksekusi. Dijelaskan di sini .


root / var / www / situs / subdir harus root / var / www / situs dalam kasus saya, jika tidak nginx akan mencoba mengakses / var / www / situs / subdir / subdir.
— Tinus

Kamu benar. Entah itu, atau Anda dapat menggunakan aliassebagai gantinyaroot
— Christopher Perrin

1
Bisakah Anda menjelaskan ini ^~lebih lanjut? Saya tidak bisa mendapatkan apa fungsinya. Saya mencoba membaca tautan yang Anda kirim, tetapi masih belum bisa mendapatkannya. Jika lokasi awalan pencocokan terpanjang memiliki pengubah "^ ~" maka ekspresi reguler tidak dicentang.
— Mohammed Noureldin

@MohammedNoureldin pada dasarnya berarti mencoba mencocokkan awalan di jalur dan tidak mengevaluasi ekspresi reguler.
— Christopher Perrin

1
@MohammedNoureldin ini adalah bagian pertama dari jalur yang ingin Anda gunakan untuk lokasi. Dan ya itu tanpa regex.
— Christopher Perrin
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.