Tôi hiện đang cố gắng tách 3 ứng dụng từ một kho lưu trữ thành 3, nhưng vẫn giữ cấu trúc url, vì vậy về cơ bản các vị trí khác nhau trong cùng một tên miền phải được phân phối bởi các ứng dụng khác nhau.
Điều tôi đang vật lộn là một trong những ứng dụng cần phải là dự phòng cho các url không tồn tại, vì vậy nếu ứng dụng đầu tiên không khớp và ứng dụng thứ hai không phù hợp thì ứng dụng thứ ba sẽ xử lý yêu cầu
Cấu trúc tôi có là:
/ etc / nginx / sites-enable / main_site, ở đây, ngoài server_name và nhật ký tôi đã nhận include /etc/nginx/subsites-enabled/*
, trong đó tôi có 3 tệp cấu hình, mỗi tệp cho một ứng dụng.
Mỗi trong số 3 tệp cấu hình chứa một khối vị trí.
Tôi đã thử tìm kiếm tiêu cực trong regex (về cơ bản là cố gắng mã hóa các url mà các ứng dụng khác xử lý) nhưng không thành công.
Vì vậy, để tóm tắt:
/ và / cộng đồng nên được phân phối bởi /etc/nginx/subsites-enables/example.org/home (một vài tập lệnh perl)
/ tin tức nên được gửi bởi /etc/nginx/subsites-enables/example.org/news (wordpress)
mọi thứ khác sẽ được phân phối bởi /etc/nginx/subsites-enables/example.org/app (ứng dụng bánh)
Các bit perl hoạt động tốt. Vấn đề tôi gặp phải là ứng dụng đang tiếp nhận tin tức (có thể là do nó phù hợp. *), Tôi đã thử nhiều tùy chọn khác nhau (tôi đã ở đây trong 2 ngày) nhưng không ai trong số họ giải quyết được tất cả các vấn đề (đôi khi tài sản tĩnh sẽ không hoạt động, vv).
Cấu hình của tôi là:
/etc/nginx/sites-enables/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-enables/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 / subsites-enable / 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 / subsites-enable / 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) đối với khối ứng dụng của bạn, bạn sẽ có thể thực hiện location /
(điều này không giống với location = /
, nhưng phải khớp với mọi thứ chưa khớp. c) trong một số trường hợp (đặc biệt là regexes), thứ tự không thành vấn đề - bạn có thể muốn kết hợp cả 3 tập tin thành một tập tin duy nhất với các khối theo đúng thứ tự. Ngoài ra, sử dụng try_files thay vì !-e
. Cuối cùng, xem wiki.nginx.org/HttpCoreModule#location .
@
tiền tố) ánh xạ tới ứng dụng mặc định của bạn. Bạn cũng có thể thiết lập error_page ánh xạ 404 đến một vị trí được đặt tên.