Задать вопрос
@Rentable
Инженер

Почему добавляется в адрес ресурса №порта на котором работает виртуальный хост nginx ?

Имеется связка:
frontend: проксирующий на несколько виртуальных машин с одного IP адреса nginx
backend: nginx

Конфигурация frontend - etc/nginx/sites-enable/site_pro.conf
server {
        listen 192.168.1.7:80;
        #access_log /var/log/nginx/proxy.log;
        server_name site.pro;
        server_name_in_redirect on;


        location / {
            proxy_pass http://192.168.1.11:8082;
            proxy_set_header    Host            $host;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;

set_real_ip_from   0.0.0.0/0;
  }
}

Конфигурация backend - etc/nginx/sites-enable/site_pro.conf
upstream backend-site_pro {server unix:/var/run/php5-site_pro.sock;}
server {
    listen              8082;
    server_name         localhost;
    root                /var/www/site_pro/www;
    access_log          /var/log/nginx/site_pro-access.log;
    error_log           /var/log/nginx/site_pro-error.log;
    index               index.php;
    rewrite_log         on;
    location /core/ {                                                          $
        deny all;                                                              $
    }
    location / {
        try_files       $uri $uri/ @rewrite;
    }
    location @rewrite {
        rewrite         ^/(.*)$ /index.php?q=$1;

 }
    location ~ \.php$ {
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass    backend-site_pro;
    }
    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ {
       access_log       off;
       expires          10d;
       break;
    }
    location ~ /\.ht {

        deny            all;

    }
set_real_ip_from 192.168.1.7;
real_ip_header X-Forwarded-For;
}


Сайт: site.pro
При добавлении в папку с сайтом, например, форума SMF вида:
site.pro/smf При первом обращении с любого браузера идёт пере направление на:
site.pro:8082/smf Если стереть :8082, и ещё раз сделать попытку - всё начинает открываться как и положено.
Стоит В ПЕРВЫЙ РАЗ зайти с любого другого компьютера - ситуация повторяется.
Права на папки - стандартные, база данных - всё как обычно. Если ресурсы разнести по отдельным виртуальным хостам - всё работает нормально. Стоит "ресурс в ресурс" поместить, как начинается такая ерунда. Будь это форум, WP или phpmyadmin ... при первом обращении всегда вылазит порт :8082
Всю голову изломал и поиск в гугле, ничего не могу найти по этому поводу.
  • Вопрос задан
  • 2866 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
DjPhoeniX
@DjPhoeniX
Hardcore iOS & ESP developer & DJ
Это особенности движка - он определяет доменное имя и подставляет его во все ссылки, а "задний" nginx сообщает пыху хост с дописанным портом. Так поступают многие.
Решение - в nginx в fastcgi_param добавлять правильный http_host (или как там его).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Rentable Автор вопроса
Инженер
Спасибо за ответ. Можно поподробней, что именно прописать. В документации на nginx.org очень скупо прошлись по fastcgi_param - ничего похожего не нашёл.
Ответ написан
Ваш ответ на вопрос

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

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