У меня есть экземпляр, сидящий за AWS Application Load Balancer и настроенный в качестве члена TargetGroup этого ALB - это URL-адрес проверки работоспособности, который выполняется для экземпляра.
Мой текущий nginx серверный блок разрешает вызовы в / folder / page, который разрешается в /folder/page .php.
server {
listen 443 ssl default_server;
keepalive_timeout 70;
root /var/www/html;
index index.php;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / {
# call .php scripts without their extension
if (!-e $request_filename){
rewrite ^(.*)$ /$1.php;
}
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Когда ELB выполняет проверку работоспособности с использованием URL-адреса /healthCheckTest
(в этой папке есть индекс. php) проверка работоспособности завершается ошибкой с ответом HTTP 301 (я настроил проверку только на прием результатов HTTP 200). Когда я настраиваю URL-адрес проверки работоспособности как /healthCheckTest/
, он проходит (я предполагаю, из-за директивы index index.php
).
Я разумно новичок в nginx и, чтобы быть честно говоря, я никогда не пробовал Apache2 с переписыванием за ELB, но мне было интересно, все ли перезаписи выполняют перенаправление HTTP (постоянное или нет), но нормально ли это? Я пробовал несколько альтернатив, и, похоже, ничего не работает - возможно, потому, что перезапись в nginx синонимична HTTP 301?
Единственный ли мой вариант, чтобы проверка работоспособности принимала HTTP301, а также HTTP200 ?