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

Правильно ли указывать ваш фактический внутренний IP-адрес в поле proxy_pass в nginx?

Сейчас я собираюсь развернуть свое приложение node.js на Google Compute Engine через nginx, но после того, как все настройки будут выполнены, я столкнулся с ошибкой «502 Bad Gateway».

Затем, после стольких часов раскопок, я наконец обнаружил, что proxy_pass поле в /etc/nginx/sites-available/server.conf должен быть ваш реальный внутренний IP-адрес, отображаемый в консоли GCE, а не http://127.0.0.1. Ниже представлен файл conf (некоторые значения приведены только для иллюстрации):

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;
    ssl_certificate        /etc/nginx/ssl/example.crt;
    ssl_certificate_key    /etc/nginx/ssl/example.key;

    location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://10.102.24.152:8888;
    }
}

Однако во всех обучающих материалах, которым я следовал, установлено значение proxy_pass к http://127.0.0.1. Но в моем случае это совсем не сработало. Ниже приведены примеры руководств:

Так что теперь я задаюсь вопросом, правильный ли это способ заставить сервер работать. Или это ведет к чему-то ценному с точки зрения безопасности? Или, может быть 127.0.0.1 правильная цифра и на моей стороне есть другие проблемы?

Да, ввод IP-адреса экземпляра - это разумный поступок.

Вы должны быть осторожны, чтобы не использовать общедоступный IP-адрес, так как вы можете получить дополнительную плату за пропускную способность. Я не знаком с GCE, но в AWS у вас есть внешний IP-адрес, который маршрутизируется в Интернете, и внутренний IP-адрес в вашей сети. Здесь могут быть отличия между AWS и GCE, может меня кто-нибудь поправит.