Я использую следующую конфигурацию для nginx 1.4.1:
server {
listen 8000;
server_name correct.name.gr;
location /test/register {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1;
}
}
То, что я хочу сделать, - это когда пользователь vist http://correct.name.gr:8000/test/register/ должен быть проксирован на apache, который выполняется на порту 80.
Когда я навещаю http://correct.name.gr:8000/test/register/, я получаю правильные результаты (index.php).
Когда я навещаю http://correct.name.gr:8000/test/register/asd, я получаю правильные результаты (404 из apache).
Когда я посещаю http://correct.name.gr:8000/test/asd, я получаю правильные результаты (404 из nginx).
Когда я навещаю http://correct.name.gr:8000/test/register123, я получаю правильные результаты (404 из apache).
Проблема заключается в том, что я посещаю http://correct.name.gr:8000/test/register. Я получаю 301 ответ, и я перенаправлен на http://localhost/test/register/ (обратите внимание на конечную косую черту и, конечно, на "localhost" )!!!
Я не делал никаких других конфигураций для nginx, чтобы положить трейлинг-косые черты или что-то подобное. Вы знаете, в чем проблема? Я хочу, чтобы http://correct.name.gr:8000/test/register работал корректно, проксируя на apache (или, если возможно, по крайней мере, чтобы выпустить ошибку 404, а не перенаправление на локальный хост пользователя).
Обновление 1: я пробовал http://correct.name.gr:8000/test/register с другого компьютера, чем вчера, когда у меня было плохое поведение. Ну, это сработало: я получил ответ 301, который указал мне на правильный http://correct.name.gr:8000/test/register/! Как можно работать с одного компьютера, но не с другого (я использую тот же браузер Chrome на обоих компьютерах)? Я попробую еще раз завтра, чтобы проверить с третьего, чтобы увидеть поведение.
Спасибо!