mgdev
@mgdev
ветеран эникей / рядовой сисадмин

Apache2 + nginx. Добавляется порт в адресную строку. Как исправить?

Доброго времени суток!
Есть два виртуальных хоста на apache (порт 8080). На одном из них установлена joomla(a.com), на другом wordpress(b.com).
Так же есть nginx в качестве прокси (порт 80).
Система - Debian 9
Когда захожу на a.com - всё ок, joomla грузится и работает как надо.
Когда захожу на b.com - wordpress грузится, но в адресной строке добавляется номер порта(b.com:8080). При дальнейшей навигации по страницам порт сохраняется, но если находясь на какой-то внутренней странице я вручную убераю порт - он не добавляется. Т.е. порт добавляется в адресную строку только при переходе по адресу b.com.

Конфиг nginx:
upstream backend {
    # Адрес back-end:
    server localhost:8080;
}

server {
    listen 80;
    server_name www.a.com a.com www.b.com b.com;
    port_in_redirect off;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Перенаправление на backend
    location / {
        proxy_pass http://backend;
        include /etc/nginx/proxy_params;
    }
}


Apache2 для a.com
<VirtualHost *:8080>

ServerName a.com
ServerAlias www.a.com
ServerAdmin support@localhost
DocumentRoot /var/www/a.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options +ExecCGI
AddHandler cgi-script.pl AddHandler cgi-script .cgi

</VirtualHost>


Apache2 для b.com:
<VirtualHost *:8080>

ServerName b.com
ServerAlias www.b.com
ServerAdmin support@localhost
DocumentRoot /var/www/b.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options +ExecCGI
AddHandler cgi-script .pl
AddHandler cgi-script .cgi

</VirtualHost>
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
ivankomolin
@ivankomolin
Судя по тому что a.com работает, а b.com не работает при одинаковых конфигах nginx+apache2, то можно смело
делать вывод что проблема не в настройках nginx+apache2)

Очевидно приложения по разному обрабатывают серверные переменные.
Покажите что у вас в include /etc/nginx/proxy_params
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AJIKAIII
я решил подобную проблему добавлением параметров в nginx default.conf

proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;

Forwarded-Port - соответственно убирает порт апача и ставит порт с которым пользователь идет на nginx
Forwarded-Proto - тоже самое только подставляет уже протокол, с которым идет пользователь.
c этими параметрами клиент будет видеть в ответ тот же порт и протокол с которыми обращался на фронт nginx а не то что отдает апач.

1C например при использовании вебсервисов, видит порт и протокол апача и поэтому вебсервисы не работают, но эти параметры исправляют ситуацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы