Назад | Перейти на главную страницу

Как настроить nginx.conf для простого перенаправления прокси-сервера?

Я пытаюсь настроить то, что может быть "привет миром" перенаправлений прокси-сервера. Это влечет за собой маршрут по умолчанию и один условный маршрут.

Я хочу, чтобы весь трафик моего сервера передавался через прокси-сервер IP 1.2.3.4, если он не соответствует /blog в этом случае он должен прокси 5.5.5.5

Я потратил некоторое время на угадывание и проверку конфигурации и прочитал кучу документов, но количество отклонений огромно, и я не могу найти точку привязки даже для одного полностью функционального простого примера, из . Пока что, я думаю, должно работать следующее:

http {
  server {
    listen 80;

    location / {
      proxy_pass 1.2.3.4
    }

    location ~ /blog {
      proxy_pass 5.5.5.5
    }
  }
}

Я обновил конфигурацию таким образом и перезагрузился без каких-либо ошибок, но когда я перехожу на сервер, я просто получаю значение по умолчанию Welcome to nginx! целевая страница.

Что мне здесь не хватает?

В вашем серверном блоке отсутствует server_name директива.

Из документация:

В этой конфигурации nginx проверяет только поле заголовка запроса «Хост», чтобы определить, на какой сервер следует направить запрос. Если его значение не соответствует ни одному имени сервера, или запрос вообще не содержит этого поля заголовка, тогда nginx направит запрос на сервер по умолчанию для этого порта.

Выделение мной.

У вашего блока нет имени сервера, поэтому запрос направляется на сервер по умолчанию, который определен в конфигурации по умолчанию.

Вам нужно только добавить server_name:

http {
server {
    listen 80;
    server_name example.com;

    # the rest of your config
}
}

Не нужно удалять все из конфигурации по умолчанию.

В итоге эта настройка в основном правильная. listen 80 можно отбросить, поскольку это значение по умолчанию, в противном случае все в порядке.

Моя проблема заключалась в том, что в стандартной установке ubuntu есть некоторые вещи, которые необходимо специально отключить. Я нашел ответ, посмотрев на этот вопрос:

https://stackoverflow.com/questions/14460935/nginx-only-shows-welcome-page

Короче, перейдите к etc/nginx/sites-enabled. ls чтобы увидеть, что там. Если вы видите что-то связанное, вы можете использовать sudo unlink ./default-or-name-of-item.

Тогда на сайтах не будет ничего, что могло бы обслуживать ... я предполагаю, что location / действительно, очень низко стоит в тотемном опросе или приоритетах при выборе чего-то для обслуживания.