У меня есть экземпляр EC2, на котором запущен Nginx с несколькими доменами. Моя конфигурация начинается так:
server {
listen 80;
#disable_symlinks off;
server_name _; #allow few domains
#Adding 'www.' to url in case it doesen't
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
index index.html index.php;
}
Я не уверен, какой путь ping использовать на ELB (amazon), потому что, если я попробую HTTP, экземпляр всегда выйдет из строя. Если я попробую TCP (порт 80), пинг пройдет успешно. Мне нужно использовать HTTP, потому что я хочу использовать липкость.
Любой совет? спасибо, Дэнни
Другой ответ на Serverfault сообщает нам, что ELB не ожидает ничего, кроме 200 OK
код состояния.
Это проблема для вашей установки, потому что rewrite
вызовет 3**
коды состояния.
Создайте новое местоположение для пути ping следующим образом:
location = /elb-ping {
return 200;
}
Тогда обязательно используйте www. для пинга, чтобы избежать перенаправления
Если вы не можете изменить домен ping на www. :
Вам нужно будет переместить перенаправление на www. к server
блок.
Или вы определяете цель статического пинга в своей конфигурации.
server {
listen 81; # What about using a different port for ELB ping?
server_name _; # Match all if the listen port is unique,
#server_name elb-instance-name; # Or match a specific name.
return 200; # Not much magic.
}
server {
listen 80;
#disable_symlinks off;
server_name _; #allow few domains
#Adding 'www.' to url in case it doesen't
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
index index.html index.php;
}
server {
listen 80;
# match hostnames NOT being www.*
# Unfortunately matches only names with length >= 4
server_name ~^(?P<domain>[^w]{3}[^\.].*)$;
location / {
rewrite ^(.*)$ $scheme://www.$domain$1; # rewrite to www.*
}
location = /elb-ping {
return 200;
}
}
server {
listen 80;
server_name www.*; # match hostnames starting with www.*
## YOUR EXISTING CONFIG HERE (without the if block and elb-ping location)
}