Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengkonfigurasi Nginx untuk Menyajikan Kandungan daripada Dua Subfolder dengan Laluan Root Berbeza?

Bagaimana untuk Mengkonfigurasi Nginx untuk Menyajikan Kandungan daripada Dua Subfolder dengan Laluan Root Berbeza?

Susan Sarandon
Susan Sarandonasal
2024-11-23 00:52:12347semak imbas

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

Konfigurasi Lokasi Nginx untuk Subfolder

Dalam artikel ini, kami akan meneroka cara mengkonfigurasi Nginx untuk menyampaikan kandungan daripada dua subfolder, satu di laluan akar dan satu lagi pada URL tertentu.

Pertimbangkan direktori berikut struktur:

/var/www/myside/
├── static
├── manage

Matlamat kami adalah untuk menjadikan folder /statik boleh diakses pada URL akar (cth., http://example.org/) dan folder /manage boleh diakses di /manage (cth., http ://example.org/manage). Dalam kes ini, folder /manage mengandungi kod rangka kerja PHP Slim, dengan fail PHP sebenar terletak dalam /var/www/mysite/manage/public/index.php.

Konfigurasi Nginx

Untuk mencapai matlamat ini, kami boleh menggunakan arahan lokasi Nginx. Berikut ialah konfigurasi yang mungkin:

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location / {
    root /var/www/mysite/static;
    index index.html;
  }

  location /manage {
    alias /var/www/mysite/manage/public;
    index index.php;

    if (!-e $request_filename) {
      rewrite ^ /manage/index.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}

Penjelasan

Mari kita pecahkan konfigurasi:

  • Blok lokasi pertama (/ ): Menentukan bahawa folder /static harus disampaikan dari akar URI.
  • Blok lokasi kedua (/manage): Menggunakan arahan alias untuk memetakan /manage URI ke direktori /var/www/mysite/manage/public.
  • Blok lokasi ketiga (lokasi ~ .php$ dalam /manage): Mengkonfigurasikan pengendalian fail PHP dalam /manage folder.
  • Blok lokasi akhir (lokasi ~ .php$ pada peringkat pelayan): Mengkonfigurasikan pengendalian fail PHP dalam folder /static.

Penggunaan alias lwn root

Apabila menggunakan alias, Nginx menyediakan fail daripada direktori yang ditentukan sambil mengekalkan URI asal. Ini berguna untuk tujuan kami, kerana kami mahu URI /manage menghala ke direktori /var/www/mysite/manage/public.

Sebaliknya, root menukar direktori root untuk blok lokasi, jadi ia tidak sesuai untuk senario kami di mana kami ingin menyampaikan subfolder berbeza dari lokasi berbeza.

Tulis Semula Peraturan untuk index.php

Peraturan tulis semula memastikan permintaan untuk fail yang tidak wujud dalam folder /manage dialihkan ke index.php. Ini membolehkan aplikasi PHP Slim mengendalikan permintaan.

Pengendalian Fail PHP

Kedua-dua blok lokasi untuk pengendalian fail PHP termasuk konfigurasi yang diperlukan untuk menjalankan skrip PHP, seperti FastCGI tetapan dan pembolehubah. Arahan fastcgi_pass menghalakan permintaan PHP ke pelayan PHP FastCGI.

Nota Akhir

Pastikan anda memastikan pelayan PHP FastCGI anda berjalan dan dikonfigurasikan dengan betul. Persediaan ini sepatutnya membolehkan anda menyediakan kandungan daripada kedua-dua subfolder /statik dan /urus dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Mengkonfigurasi Nginx untuk Menyajikan Kandungan daripada Dua Subfolder dengan Laluan Root Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn