Доступ к веб-страницам осуществляется следующим образом:
example.com/?site=website
В этом примере я захожу на веб-сайт, расположенный в домене example.com
.
Может ли кто-нибудь предложить оптимальный способ переписывания правил, чтобы приведенное выше было показано и доступно по адресу example.com/website
?
nginx, Centos 7
Вы можете использовать следующее, помня, чтоIfIsEvil
location = / {
if ($arg_site) {
return 302 /$arg_site;
}
}
Связано:
Идея заключается в том, что вы создаете цикл перенаправления, но на самом деле это не так. , так как есть разница между внешними и внутренними перенаправлениями, поэтому цикл не является замкнутым, потому что одно перенаправление явно только внешнее, а другое явно только внутреннее:
location = / {
if ($arg_site) {
return 302 /$arg_site;
}
return 200
"<!DOCTYPE html><title>site</title>
<form><input name='site' value='website'/></form>\n";
}
location / {
rewrite ^/([^/]*)\$ /?site=$1 break;
proxy_pass http://javabackend:8080;
}