The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Замена содержимого html на лету"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Замена содержимого html на лету"  +/
Сообщение от Sheh email(ok) on 13-Ноя-09, 09:31 
Доброе время суток. Возникла интересная задача, но методов решения не могу найти.

Есть шлюз(Fedora 10) с белым ip, за ним в локальной сети машина server-db с адресом 192.168.2.2. На server-db стоит Microsoft SQL Server 2005: Reporting Services. Служит для просмотра отчётов клиентами через WEB. Изнутри сети всё хорошо работает. Снаружи я дал доступ на server-db через Apache с помощью mod_proxy. Однако при нажатии юзером из внешней сети на ссылки вида http://server-db/Reports/Pages/Folder.aspx браузер выдаёт "Невозможно отобразить страницу". Ну это очевидно, ведь "server-db" - это локальное имя компа. Мне бы как-то сделать, чтобы Apache в содержимом выдаваемых страниц менял "server-db" на белый ip?

А может и вовсе есть более простой вариант? Порт пробрасывать напрямую не хочется, вдруг в будущем появится ещё один сервис на 80 порту.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Замена содержимого html на лету"  +/
Сообщение от g.iliya (ok) on 13-Ноя-09, 23:17 
Тут надо смотреть в настройки этого "Microsoft SQL Server 2005: Reporting Services" как там менять домен. Если никак - тогда можно написать самому или где нибудь скачать какой-нибудь php скрипт который будет менять url.

>А может и вовсе есть более простой вариант? Порт пробрасывать напрямую не
>хочется, вдруг в будущем появится ещё один сервис на 80 порту.

Прописать у всех пользователей в hosts белый ip для server-db и создать в apache виртуальный домен для server-db, а с apache передавать запросы на реальный server-db.

Но на мой взгляд кроме первого способа остальные не слишком красивые решения, мягко говоря.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Замена содержимого html на лету"  +/
Сообщение от Sheh email(ok) on 15-Ноя-09, 18:44 

>Прописать у всех пользователей в hosts белый ip для server-db и создать
>в apache виртуальный домен для server-db, а с apache передавать запросы
>на реальный server-db.
>
>Но на мой взгляд кроме первого способа остальные не слишком красивые решения,
>мягко говоря.

Да нет, вы что. Я же не знаю этих пользователей. Они из Интернета будут смотреть отчёты.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Замена содержимого html на лету"  +/
Сообщение от Vladin (ok) on 15-Ноя-09, 23:46 
или писать свой скрипт-прослойку, через который будут идти все запросы на MSSql
или воспользоваться http://www.webthing.com/software/mod_proxy_html/

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

Only the HTTP response headers specifically mentioned above will be rewritten. Apache will not rewrite other response headers, nor will it rewrite URL references inside HTML pages. This means that if the proxied content contains absolute URL references, they will by-pass the proxy. A third-party module that will look inside the HTML and rewrite URL references is Nick Kew's mod_proxy_html.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Замена содержимого html на лету"  +/
Сообщение от Sheh email(ok) on 16-Ноя-09, 06:09 

>
>или воспользоваться http://www.webthing.com/software/mod_proxy_html/
>

Спасибо большое за наводку. Скорее воспользуюсь mod_proxy_html

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Замена содержимого html на лету"  +/
Сообщение от Sheh email(ok) on 17-Ноя-09, 14:28 
C mod_proxy_html не получилось. Модуль скомпилил, установил.
Вот с таким фрагментом замена абсолютных ссылок не происходит. Наверное потому, что странички то *.aspx, а не html )
-----------------------------------------
<VirtualHost *:80>
DocumentRoot /
ProxyHTMLLogVerbose On
ProxyRequests Off
ProxyHTMLEnable On
ProxyPass / http://192.168.2.2/
ProxyPassReverse / http://192.168.2.2/
#SetOutputFilter proxy-html
ProxyHTMLURLMap http://192.168.2.20/ /
RequestHeader unset Accept-Encoding
</VirtualHost>

-----------------------------------------
Решил сделать через nginx.
Пытаюсь настроить nginx как обратный прокси. Это мне нужно для того, чтобы дать пользователям доступ из внешней сети к Microsoft Reporting Services по http. Reporting Services находится на внутреннем сервере 192.168.2.2. Nginx установил, как прокси он работает, но вот ссылки в выдаваемом содержимом не подменяет (за подмену отвечает mod_sub). Т.е. на сайте есть ссылка: http://server-db/Reports/Pages/Folder.aspx. Надо, чтобы в выдаваемой странице ссылка стала такой: http:/87.241.*.*/Reports/Pages/Folder.aspx

Мой конфиг:
#------------------------------------------
worker_processes  1;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server
    {
        listen       80;
        server_name  localhost;

        location /
        {
            proxy_pass        http://192.168.2.2:80;
            proxy_redirect   http://server-db/   http://87.241.*.*/;
            sub_filter server-db 87.241.*.*;
            sub_filter_once off;
            root   html;
            index  index.html index.htm ;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html
            {
            root   html;
            }
    }

#------------------------------------------

Это вообще реально сделать?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Замена содержимого html на лету"  +/
Сообщение от greenwar (ok) on 21-Ноя-09, 22:44 
>Мне бы как-то сделать, чтобы Apache в содержимом выдаваемых страниц менял "server-db" на белый ip?
>
>А может и вовсе есть более простой вариант? Порт пробрасывать напрямую не
>хочется, вдруг в будущем появится ещё один сервис на 80 порту.

что там за внешние пользователи такие, что им через mod_proxy удобнее, чем через отдельный порт..
апачи в содержимом врядли что-то сможет поменять. он не на то рассчитан. он просто отдаёт контент
можете использовать mod_rewrite. правило на запросы от внешних IP
также можете менять содержимое через perl или php
тупо весь народ через .htaccess, например, слать на скрипт, он уже разберётся

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Замена содержимого html на лету"  +/
Сообщение от Sheh email(ok) on 23-Ноя-09, 06:46 
>что там за внешние пользователи такие, что им через mod_proxy удобнее, чем
>через отдельный порт..

Дело не в пользователях. Если я тупо проброшу порт на внутреннюю машину, то при появлении ещё одной машины, которой нужен будет доступ по 80 порту извне придётся снова вернуться к этому вопросу.

>апачи в содержимом врядли что-то сможет поменять.

Может вроде как. Модуль называется mod_proxy_html

>mod_rewrite

Этот модуль не умеет менять СОДЕРЖИМОЕ html-страниц.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Замена содержимого html на лету"  +/
Сообщение от greenwar (??) on 23-Ноя-09, 13:17 
>>mod_rewrite
>
>Этот модуль не умеет менять СОДЕРЖИМОЕ html-страниц.

зато может подсовывать другие страницы
просто надо 2 разных страницы будет иметь
в свете поставленной задачи вполне сойдёт за вариант

P.S. а вариант размещения всех своих внутренних сайтов на одном апаче не рассматривали? а выделение отдельного порта под отдельный сайт, не?
по какому вообще принципу пользователей разделяете на разные сервера внутри сети?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Замена содержимого html на лету"  +/
Сообщение от greenwar (ok) on 23-Ноя-09, 15:20 
точнее говоря, в свете поставленной задачи, это выглядит так:
http://server-db/Reports/Pages/Folder.aspx меняется на http://212.101.55.12/Reports/Pages/Folder.aspx
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру