Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > анализ имени сайта при помощи iptables


Автор: mihanik 22.12.2012, 20:46
Коллеги!

Есть такая конструкция: шлюз тырнета, пока обычный NAT.

За шлюзом два сервака.
Оба могут обслуживать запросы (и обслуживают) по http.

Сейчас я разруливаю то, на какой сервак нужно перекинуть трафик так:
один www сервер у меня "основной".
На нём у меня есть несколько рабочих сайтов (с разными адресами). httpd это легко и просто разруливает.
Также на нём есть сайты-заглушки, у которых в корне лежит примерно такая конструкция в файле index.php

Код

<?php
/**
* Forwarder to second site on port 82
*
*/

header("Location: http://second_site_name:82");


И соответственно на шлюзе два правила: 80-й порт перебрасывать на один сервак, а 82-й порт на второй.

Это не красиво.

Как мне заставить шлюз анализировать имя сайта, к которому запрос, и для проброса использовать только порт 80 ?

Что-то гуглю... Гуглю... Всё без толку.

Автор: tzirechnoy 22.12.2012, 22:07
Поставить на шлюз nginx в качестве proxy. Можно без кэша (ну, в зависимости от мощности шлюза).

Автор: mihanik 22.12.2012, 22:52
tzirechnoy, думаешь?

В принципе, у меня была такая мысль...
НО!

Я его не юзал щё ни разу...
:-(

Особо экспериментировать нет времени.

Пример подобного использования (читай, "настроек") есть?


Автор: tzirechnoy 24.12.2012, 17:51
по-моему, дефолтный конфиг вполне себе пример. Разкомментировать что нужно, склонировать на все имена.

Автор: rsm 25.12.2012, 10:20
Вот проверенный пример конфига:
Код

server {

    listen 80;
    server_name liburg.ru;

    location ^~ /admin-media {
        alias /usr/local/lib/python2.6/site-packages/django/contrib/admin/media;
    }

    location = /robots.txt {
        root /www/liburg/static/;
    }

    location ~* \.(jpg|jpeg|gif|png|ico|css|zip|js|swf)$ {
        root /www/liburg/static/;
        expires 7d;
    }

    location / {
        proxy_pass http://127.0.0.1:8001/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Взято http://adw0rd.com/2009/11/15/nginx-tornado-django/.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)