Saat ini saya mencoba memecah 3 aplikasi dari satu repositori menjadi 3, tetapi menjaga struktur url, jadi pada dasarnya lokasi yang berbeda di bawah domain yang sama harus dikirimkan oleh aplikasi yang berbeda.
Yang saya perjuangkan adalah bahwa salah satu aplikasi harus menjadi cadangan untuk url yang tidak ada, jadi jika yang pertama tidak cocok, dan yang kedua tidak cocok, maka yang ketiga harus menangani permintaan
Struktur yang saya miliki adalah:
/ etc / nginx / sites-enabled / main_site, di sini, selain dari server_name dan log yang saya punya include /etc/nginx/subsites-enabled/*, di mana saya punya 3 file konfigurasi, satu untuk masing-masing aplikasi.
Masing-masing dari 3 file konfigurasi berisi blok lokasi.
Saya sudah mencoba lookahead negatif di regex (pada dasarnya mencoba mengubah kode url yang ditangani aplikasi lain) tetapi gagal.
Jadi, untuk meringkas:
/ dan / komunitas harus dikirimkan oleh /etc/nginx/subsites-enabled/example.org/home (beberapa skrip perl)
/ berita harus disampaikan oleh /etc/nginx/subsites-enabled/example.org/news (wordpress)
segala sesuatu yang lain harus dikirimkan oleh /etc/nginx/subsites-enabled/example.org/app (aplikasi kue)
Bit perl bekerja dengan baik. Masalah yang saya alami adalah aplikasi ini mengambil alih berita (mungkin karena cocok. *), Saya sudah mencoba berbagai opsi (saya sudah melakukannya selama 2 hari) tetapi tidak satupun dari mereka menyelesaikan semua masalah (terkadang aset statis tidak akan berfungsi, dll).
Konfigurasi saya adalah:
/etc/nginx/sites-enabled/example.org:
server {
listen 80;
server_name example.org;
error_log /var/log/nginx/example.org.log;
include /etc/nginx/subsites-enabled/example.org/*;
}
/etc/nginx/subsites-enabled/example.org/home:
location = / {
rewrite ^.*$ /index.pl last;
}
location ~* /community(.*) {
rewrite ^.*$ /index.pl last;
}
location ~ \.pl {
root /var/www/vhosts/home;
access_log /var/log/nginx/home/access.log;
error_log /var/log/nginx/home/error.log;
include /etc/nginx/fastcgi_params;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/home$fastcgi_script_name;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
/ etc / ngins / subsitus-enabled / news
location /news {
access_log /var/log/nginx/news/access.log;
error_log /var/log/nginx/news/error.log debug;
error_page 404 = /news/index.php;
root /var/www/vhosts/news;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/news$fastcgi_script_name;
}
}
/ etc / nginx / subsitus-enabled / app:
location ~ .* {
access_log /var/log/nginx/app/access.log;
error_log /var/log/nginx/app/error.log;
rewrite_log on;
index index.php;
root /var/www/vhosts/app/app/webroot;
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/app/app/webroot$fastcgi_script_name;
}
}
location ^~ /news. b) untuk blok aplikasi Anda, Anda harus dapat melakukan location /(ini tidak sama dengan location = /, tetapi harus cocok dengan semua yang belum cocok. c) dalam beberapa kasus (terutama regex), pesanan itu penting - Anda mungkin ingin menggabungkan 3 file menjadi satu file dengan blok dalam urutan yang benar. Juga, gunakan try_files bukan !-e. Terakhir lihat wiki.nginx.org/HttpCoreModule#location .
@awalan) yang memetakan ke aplikasi default Anda. Anda juga dapat mengatur error_page yang memetakan 404 ke lokasi yang ditentukan.