NGINX в качестве прокси Node.js - PullRequest
       19

NGINX в качестве прокси Node.js

3 голосов
/ 19 февраля 2012

Я использую NODE.js за сервером NGINX, это моя конфигурация Nginx:

upstream example.it {
        server 127.0.0.1:8000;
}

server {
        server_name www.example.it;

        location / {
                proxy_pass      http://example.it;
                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;
        }
}

Все работает хорошо, запросы правильно отправляются с nginx на узел, НО я увидел проблему в журналефайл, сгенерированный из Express.js.

Проблема в том, что ВСЕ ЗАПРОСЫ сохраняются так же, как и в 127.0.0.1, почему?

Я не видел ни одного удаленного хоста (настоящий ip того, кто сделал запрос).

Спасибо

Ответы [ 2 ]

8 голосов
/ 10 декабря 2012

Если вы используете Express 3.0, лучше сделать это с помощью параметра trust proxy.

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

trust proxy Включение поддержки обратного прокси-сервера, отключено по умолчанию

Для того, чтобы использовать его:

app.set('trust proxy', true);
app.use(express.logger('default'));

Это дает дополнительное преимущество правильной работы при использованиипрокси, как, когда вы не (например, в среде разработки).

8 голосов
/ 19 февраля 2012

Это верно, так как nginx будет удаленным хостом.Для регистрации заголовка X-Forwarded-For необходимо указать собственный формат журнала, см. Документацию connect logger .

app.use(express.logger(':req[X-Forwarded-For] - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...