Существует машинка с
1) тремя внешними IP (eth0, eth0.0, eth0.1)
2) связкой NginX + Apache2
На IP1 висят конкретные сайты, прописаны в конфиге.
На IP1, IP2 и IP3, помимо вышеозвученых конкретных сайтов, привязано множество часто меняющихся доменов.
Нужно, чтобы NginX выдавал для всех, не прописанных доменов, соответствующий определенному IP контент.
Часть конфига, где была попытка реализовать такой wildcard (термин подходит к этому случаю?):
upstream backend { server 127.0.0.1:81; }
server {
listen IP1:80;
server_name _;
root /var/www/00-default;
location / { try_files $uri @forb; }
location @forb { deny all; }
}
server {
listen IP2:80;
server_name _;
root /var/www/01-default;
location / { try_files $uri @forb; }
location @forb { deny all; }
}
server {
listen IP3:80;
server_name _;
root /var/www/direct;
location / { try_files $uri @backend; }
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location ~ /\. { deny all; access_log off; log_not_found off; }
location ~ \.php {
proxy_pass http://backend;
include /etc/nginx/proxy.conf;
allow all;}
location @backend {
proxy_pass http://backend;
include /etc/nginx/proxy.conf;
allow all;}
}
Так код выглядит уже после многодневных шаманств.
Запрос на IP1 и IP2 должны выдавать простую HTML страницу, запрос на IP3 взывает к скрипту мультиблога, который в зависимости от домена выдает нужные страницы. Так должно быть в идеале. Но в итоге IP3 работает как нужно, IP2 - тоже, а вот IP1 выдает то же самое, что и IP3. В чем дело?
В конце шаманств я даже попробовал привести IP1 и IP2 к одному виду, зарулив их на время теста в одну папку:
server {
listen IP1:80;
server_name _;
root /var/www/00-default;
location / { try_files $uri @forb; }
location @forb { deny all; }
}
server {
listen IP2:80;
server_name _;
root /var/www/00-default;
location / { try_files $uri @forb; }
location @forb { deny all; }
}
...и все равно по IP1 получаю контент от IP3. ЧЯНТД? При этом конкретно прописанные домены на IP1 работают как нужно.