
Я запускаю на одном сервере 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;
без протокола.