Странное поведение nginx на 2 IP
chinchevoy
nginx-forum на nginx.us
Пн Мар 21 18:04:33 MSK 2011
Есть сервер, nginx (nginx/0.7.62) ->apache2(Apache/2.2.12
(Ubuntu), mod_php)
На сервере 2 внешних IP.
Есть несколько сайтов на одном IP,
подключил второй IP, и стал наблюдать
такую ситуацию:
При обращении к любому домену сайта,
направленному на 2 IP, происходит
обработка первым правилом (первым в
смысле в списке в mc первым, не правилом
default) в конфигах nginx (оно ведет на первый
IP). Также при обращении к
несуществующему поддомену любого
сайта на 1 IP происходит обработка тем же
правилом.
чтобы было понятнее пример:
сайт domen.com - 1IP, конфиг в nginx:
server {
listen 1IP:80;
server_name domen.com www.domen.com *.domen.com domen3.com
www.domen3.com domen3.com www.domen3.com domen4.com www.domen4.com
server_name_in_redirect off;
index index.php;
error_page 500 502 503 504 /500.html;
error_page 404 /404.php;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 1024M;
client_body_buffer_size 4M;
location / {
expires 3d;
root /home/domen.com/public_html;
}
location ~*
^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/domen.com/public_html;
error_page 404 = @fallback;
}
location ~ (/|\.php)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ (/|\.html)$ {
proxy_pass http://127.0.0.1:8888;
}
location @fallback {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ /\.ht {
deny all;
}
}
domen2.com - 2IP, конфиг в nginx:
server {
listen 2IP:80;
server_name domen2.com *.domen2.com;
server_name_in_redirect on;
index index.php;
error_page 500 502 503 504 /500.html;
error_page 404 /404.php;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 1024M;
client_body_buffer_size 4M;
location / {
expires 3d;
root /home/domen2.com/public_html;
}
location ~*
^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/domen2.com/public_html;
error_page 404 = @fallback;
}
location ~ (/|\.php)$ {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Server-Address $server_addr;
}
location ~ (/|\.html)$ {
proxy_pass http://127.0.0.1:8888;
}
location @fallback {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Server-Address $server_addr;
}
location ~ /\.ht {
deny all;
}
}
при обращении к domen2.com/1.php открывается
страница 1.php с сайта domen1.com, и переменная
[DOCUMENT_ROOT] => /home/domen.com/public_html
При обращении к sub.domen1.com/1.php открывается
страница 1.php с сайта domen1.com, и переменная
[DOCUMENT_ROOT] => /home/domen.com/public_html
domen1.com имеет практически идентичный
конфиг с сайтом domen.com, разница в location / и
доменных адресах.
Не могу понять куда надо копать и что
делать, вроде бы все указал как в доках
написано, но почему то обработка
происходит не тем конфигом, которым
нужно...
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,184348,184348#msg-184348
Подробная информация о списке рассылки nginx-ru