Задать вопрос
@Drno

Как правильно изменить конфиг для добавления прокси?

Есть простой файловый сервер на NGINX, просто отдает файлы которые находятся в каталоге
Надо добавить проксирование к определенному сайту.
Хочется, чтобы при открытии сайта mysite.ru было 2 ссылки - типо files и redirect.
При открытии mysite.ru/files - открывался файловый сервер
При mysite.ru/redirect - открывался допустим google.com
По отдельности то понятно, все работает. Не понимаю как это запихнуть в 1 конфиг файл.
Ну и как html надо подправить, но это уже проще, нагуглю.

Собственно содержимое конфига, это тестовое

server {
    listen       80;
    listen  [::]:80;
    server_name  site;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # download
    autoindex on;               # enable directory listing output
    autoindex_exact_size off;   # output file sizes rounded to kilobytes, megabytes, and gigabytes

    #location / {
    #    root upload;
    #}
}
#Вот тут дальше как правильно сделать... 
 server {
    listen          80;
    server_name     redirect;
    location / {
        proxy_pass  https://www.google.com;
    }
}
}
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Простой 11 комментариев
Решения вопроса 1
karabanov
@karabanov
Системный администратор
Ты путаешь термины редирект и проксирование. Если нужен редирект, то:
location /files {
        root /path/to/files/directory;
    }

    location /google {
        return 301 https://www.google.com;
    }

Но, судя по описанию, тебе нужно проксирование:
location /files {
        root /path/to/files/directory;
    }

    location ~* /google(?<my_uri>.*) {
      proxy_set_header        Host www.google.com;
      proxy_set_header        X-Forwarded-Proto https;

      proxy_pass https://www.google.com/$my_uri;
      proxy_read_timeout  60;
      proxy_ssl_name www.google.com;
      proxy_ssl_server_name on;
      proxy_ssl_session_reuse off;

      proxy_redirect off;
    }

При таком раскладе откроется индексная страница www.google.com, только без картинок и прочей статики, так как в HTML коде вписаны пути относительно корня сайта. Если делать проксирование в location / { ... }, то работать будет, как ожидается.

PS
Когда занимаешься подобными вещами проверяй работоспособность с помощью curl, так как браузер агрессивно кеширует ответы. В частности, если целевой сервер ответит редиректом, то редирект будет закеширован и даже если конфиг, в итоге, окажется рабочим, ты будешь ломать голову почему результат не такой, как ожидается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
YCLIENTS Москва
от 350 000 до 400 000 ₽
Viletech Москва
от 70 000 до 120 000 ₽