Я использую следующую конфигурацию для 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 на обоих компьютерах)? Я попробую еще раз завтра, чтобы проверить с третьего, чтобы увидеть поведение.
Спасибо!