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.