Я пытаюсь настроить nginx так, чтобы он вел себя как обратный прокси-сервер, прослушивающий поддомен, который мы контролируем. Я следовал примерам, найденным в сети, и они в основном работают, за одним исключением, которое мне непонятно.
Проверьте блок сервера ниже:
server{
listen *:80;
server_name placehold.com;
charset utf-8;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_pass http://google.com/;
}
}
google.com — это заглушка для этого теста.
Если я посещу URL-адрес типа "http://placehold.com/test" это работает отлично, меня перенаправляет на какую-то страницу ошибок Google, а URL в браузере остается таким же. Но если я ввожу пустой URL, например "http://placehold.com/"затем он перенаправляет мой браузер на домашнюю страницу Google, URL-адрес Google четко отображается в браузере.
Как заставить обратный прокси-сервер правильно маскировать URL для URL-адресов «/», а также для URL-адресов «/with/some/path»?
решение1
Ваш прокси работает нормально. Visitng http://google.com
возвращает:
301 Moved Permanently
Location:https://www.google.com/
Ваш браузер перенаправляется наhttp://www.google.com