nginx всегда отправляет запросы локальному apache

nginx всегда отправляет запросы локальному apache

Я запускаю на одном сервере Apache (порт 81) и NGINX (порт 80). Для www.example.com у меня есть следующее в файле конфигурации NGINX.

Проблема в том, что когда Apache запущен на этом сервере, ВСЕ запросы к www.example.com отправляются на сервер Apache на порт 81. Это не настроено в upstream, и www.example.com также не настроен в локальном экземпляре Apache, поэтому везде возникают ошибки.

Я не хочу, чтобы это стало локальным, а только внешним, как определено в исходном тексте.

Когда я останавливаю Apache, используется upstream, и запросы от nginx отправляются на серверы, определенные в upstream. Когда я снова запускаю Apache, все запросы направляются локально в Apache.

Так как же мне избежать отправки запросов Apache, когда он загружен, и позволить nginx всегда использовать определенный upstream?

upstream mainserver {
    server w1.externalserver.nl;
    server w2.externalserver.nl;
}

server {
listen 80;

server_name www.example.com;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://mainserver;

}
}

решение1

Предлагаю определить номер порта в конфигах nginx:

upstream mainserver {
    server w1.externalserver.nl:81;
    server w2.externalserver.nl:81;
}

И проверьте, что Apache прослушивает Ваш правильный порт. Для установок Ubuntu:apache2.confилипорты.conf(проверьте также этот файл, он может содержать настройки перезаписи):

Listen 127.0.0.1:81

Обновление 1

+-------------+
| server 1    | <------- http request :80
|             |
| nginx ----+ | -------> redirect to server 2 (You want)
|           | |
| Apache <--+ | internal redirect to local Apache (problem place)
+-------------+

1). На сервере 1 запустите Apache и nginx. curl -I http://example.com:80 Проверьте поле "Server" в ответе. Если Apache присутствует - внимательно проверьте все его конфиги: apache2.conf, ports.conf, конфиги виртуальных хостов - где-то упоминается порт 80 и Apache "rewrite" nginx "listen".

2) Попробуйте proxy_pass http://mainserver;- proxy_pass mainserver;без протокола.

Связанный контент