MajorDoMo через proxy

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

IgorOk76
Сообщения: 9
Зарегистрирован: Пт фев 03, 2017 5:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

MajorDoMo через proxy

Сообщение IgorOk76 » Сб фев 04, 2017 1:56 pm

Интернет в доме по динамическому IP. Озадачился обеспечением доступа к MajorDoMo из внешних сетей.
У меня есть внешний сервер на Debian с Nginx. Установил на него VPN (PPTP). Настроил MajorDoMo на подключение к этому VPN.
На Nginx настроил proxy:

Код: Выделить всё

server {
    include listen;
    server_name majordomo.myDomain.ru;
    location / {
        proxy_pass http://192.168.0.100:80;
        proxy_set_header Host $http_host;
        proxy_send_timeout 120;
        proxy_read_timeout 120;
    }
    access_log /home/k1soft/logs/majordomo.access.log main;
    error_log  /home/k1soft/logs/majordomo.error.log warn;
}
 
MajorDoMo стал виден снаружи. Всё казалось бы хорошо, но возникла проблема:
При доступе по внутренней сети - всё ок, но если тыкаться снаружи - интерфейс загружается криво.
В логах Nginx ошибка:

Код: Выделить всё

2017/02/04 13:37:19 [error] 1158#1158: *455 upstream timed out (110: Connection timed out) while reading upstream, client: 95.133.345.445, server: majordomo.myDomain.ru, 
request: "GET /jquerymobile/jquery-1.10.2.min.js HTTP/1.1", upstream: "http://192.168.0.100:80/jquerymobile/jquery-1.10.2.min.js", host: "majordomo.myDomain.ru", 
referrer: "http://majordomo.myDomain.ru/menu.html"
 
Что характерно, если постучаться с андроида с Дельфина - чаще всего всё загружается нормально.
Уже бошку себе свернул.
Помогите, пожалуйста, решить проблему.

P.S.: Вероятно, проблема возникает с трансляцией WebSocets. Хотя я могу ошибаться. С ними столкнулся впервые.
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: MajorDoMo через proxy

Сообщение savenko_egor » Сб фев 04, 2017 2:13 pm

Ну так всё верно. Вам Ваш Nginx Proxy говорит что я незнаю этот IP: 192.168.0.100. Скорее всего Вы настроили и прокси и ВПН, но с сервера с Nginx не пингуется IP: 192.168.0.100. Попробуйте попинговать IP: 192.168.0.100 с сервера с Nginx.
Если это так, то Вам нужно прописать роут.
У меня настройка практически такая же как у Вас и всё работает хорошо.
IgorOk76
Сообщения: 9
Зарегистрирован: Пт фев 03, 2017 5:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: MajorDoMo через proxy

Сообщение IgorOk76 » Сб фев 04, 2017 2:21 pm

warik, маршруты прописаны. Всё пингуется.
Проблема в том, что затык происходит именно на jquery-1.10.2.min.js. Всё остальное приходит нормально. ((
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: MajorDoMo через proxy

Сообщение savenko_egor » Сб фев 04, 2017 2:22 pm

Да, да. Только сейчас обратил внимание на конфиг nginx-а. Сорри. Не заметил))
Попробуйте курлом стащить этот файл на сервер с Nginx: curl http://192.168.0.100:80/jquerymobile/jq ... 0.2.min.js
IgorOk76
Сообщения: 9
Зарегистрирован: Пт фев 03, 2017 5:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: MajorDoMo через proxy

Сообщение IgorOk76 » Сб фев 04, 2017 2:26 pm

Стащился мгновенно.
Причем снаружи http://majordomo.myDomain.ru/jquerymobi ... 0.2.min.js получился не полностью и повис до таймаута.
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: MajorDoMo через proxy

Сообщение savenko_egor » Сб фев 04, 2017 2:29 pm

У меня виртуальный хост такой:

Код: Выделить всё

server {
    listen *:80;

    access_log /var/log/nginx/proxy.log;
    client_max_body_size 128m;

    location / {
        proxy_pass http://192.168.1.9;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
} 
Особых отличий от Вашего нет, кроме X-Real-IP.
IgorOk76
Сообщения: 9
Зарегистрирован: Пт фев 03, 2017 5:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: MajorDoMo через proxy

Сообщение IgorOk76 » Сб фев 04, 2017 2:37 pm

К сожалению, Ваши конфиги не помогли. ((( Да и смысл в них тот-же.
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: MajorDoMo через proxy

Сообщение savenko_egor » Сб фев 04, 2017 2:44 pm

Пишут такие вещи:

Код: Выделить всё

proxy_http_version 1.1;
proxy_set_header Connection ""; 
Пробовали?

Так же если пробовать из интернета выкачать файл напрямую: http://majordomo.myDomain.ru/jquerymobi ... 0.2.min.js нормально скачивается?

Общий конфиг Nginx-а у меня такой:
СпойлерПоказать

Код: Выделить всё

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
        worker_connections 768;
}

http {
 
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

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

        gzip on;
        gzip_disable "msie6";

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}
IgorOk76
Сообщения: 9
Зарегистрирован: Пт фев 03, 2017 5:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: MajorDoMo через proxy

Сообщение IgorOk76 » Сб фев 04, 2017 2:57 pm

Из интернета не качается.
хидер не помог.
Сейчас попробую костыль по переносу jquerymobile на nginx сервер...
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: MajorDoMo через proxy

Сообщение savenko_egor » Сб фев 04, 2017 2:59 pm

В таком случае проще просто указать адрес js файла в интернете.
Например так:

Код: Выделить всё

https://code.jquery.com/jquery-1.10.2.min.js    
То есть тут:

Код: Выделить всё

../templates/menu.html
Изменить строку:

Код: Выделить всё

<script type="text/javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>
На:

Код: Выделить всё

<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
Ну или везде где встретится:
./templates/print_all.html:        <script language="javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>
./templates/menu.html:<script type="text/javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>
./templates/application.html:<script type="text/javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>
./templates/scenes.html:<script type="text/javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>                                                                                                                                                           
./templates/panel.html:        <script language="javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>                                                                                                                                                     
./templates/pages.html:<script type="text/javascript" src="<#ROOTHTML#>jquerymobile/jquery-1.10.2.min.js"></script>
Но в таком случае если Алиса останется без интернета, тогда файл не подгрузится.
Ответить