The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Замена содержимого html на лету, !*! Sheh, 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 порту.

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

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

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

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


    • Замена содержимого html на лету, !*! Sheh, 18:44 , 15-Ноя-09 (2)

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

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

  • Замена содержимого html на лету, !*! Vladin, 23:46 , 15-Ноя-09 (3)
    или писать свой скрипт-прослойку, через который будут идти все запросы на 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.

    • Замена содержимого html на лету, !*! Sheh, 06:09 , 16-Ноя-09 (4)

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

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

      • Замена содержимого html на лету, !*! Sheh, 14:28 , 17-Ноя-09 (5)
        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;
                    }
            }

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

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

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

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

    • Замена содержимого html на лету, !*! Sheh, 06:46 , 23-Ноя-09 (7)
      >что там за внешние пользователи такие, что им через mod_proxy удобнее, чем
      >через отдельный порт..

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

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

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

      >mod_rewrite

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




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

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