@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;
    }
}
}
  • Вопрос задан
  • 139 просмотров
Решения вопроса 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, так как браузер агрессивно кеширует ответы. В частности, если целевой сервер ответит редиректом, то редирект будет закеширован и даже если конфиг, в итоге, окажется рабочим, ты будешь ломать голову почему результат не такой, как ожидается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы