Я получил эту рабочую конфигурацию nginx:
server {
listen 80;
server_name mydomain.com;
root /var/www/mydomain/wordpress;
index index.html index.php;
location /customer1 {
alias /var/www/mydomain/customers/custumer1;
}
location /customer2 {
alias /var/www/mydomain/customers/custumer2;
}
...
location /customerN {
alias /var/www/mydomain/customers/custumerN;
}
где customer1 ... customerN - псевдонимы.
проблема в том, что клиенты быстро растут. Итак, есть ли способ сделать эту конфигурацию более эффективной? есть ли способ создавать массивы?
Спасибо!
Ваша конфигурация выглядит ... странно. Прежде всего, псевдоним в nginx отличается от псевдонима в apache. http://nginx.org/ru/docs/http/ngx_http_core_module.html#alias Вы должны использовать вместо этого root, если я вас правильно понял http://nginx.org/ru/docs/http/ngx_http_core_module.html#root
Если URI клиента похожи на http://example.com/random_customer_name
Тогда у вас должно получиться что-то вроде этого:
location / {
root /var/www/mydomain/customers;
try_files $uri $uri/ @php;
}
location @php {
root /var/www/mydomain/wordpress;
# I think you need some proxying to apache or php-pfm here
}
Но у него есть некоторые очевидные проблемы, такие как пользователь с именами wp-login, wp-admin и так далее. Так что лучше иметь URI вроде http://example.com/users/random_customer_name И конфиг будет таким простым:
location /users {
root /var/www/mydomain/customers;
}
Вы можете использовать это location
блок:
location ~ ^/customer(?<customerid>[0-9])$ {
alias /var/www/mydomain/customers/customer$customerid;
}
Здесь мы используем регулярное выражение для ввода номера клиента в $customerid
переменной, а затем используйте переменную в alias
заявление.
Регулярные выражения - очень мощный метод сопоставления текстовых строк различного типа, поэтому вы можете легко адаптировать его для покрытия более длинных чисел и т. Д.