Как заставить домен работать под определенным портом?

На моем сервере работает экземпляр apache, и он использует порт 80. У меня также есть приложение nodejs, использующее порт 8081. Теперь есть пара доменов, которые указывают на сервер. Apache обрабатывает все запросы и на все отвечает. Я хочу, чтобы приложение NodeJS отвечало только на один из доменов. Другими словами, я хочу, чтобы один домен указывал на сервер для запуска приложения NodeJS.

Это именно то, что я хочу сделать: введите здесь описание изображения

Это файл конфигурации named.

/etc/named.conf

options {
        #listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        allow-transfer { localhost; ip-address; };
        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};
zone “maindomain.com” IN {
        type master;
        file “maindomain.com.zone”;
        allow-update { none; };
};  
zone “domain1.com” IN {
        type master;
        file “domain1.com.zone”;
        allow-update { none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Это файл зоны.

/etc/named/domain1.com.zone

$TTL 86400
@       IN      SOA     ns1.maindomain.com. maindomain.com. (
        2013042201
        3600
        1800
        604800
        86400
)

        IN      NS      ns1. maindomain.com.
        IN      NS      ns2. maindomain.com.

@       IN      A       ip
www     IN      A       ip
*       IN      A       ip
_http._tcp.domain1.com.    IN      SRV     0       5       8081    domain1.com.

Я добавил домен, который хочу использовать с моим приложением NodeJS, в файл hosts. Но ничего не изменилось. /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
ip::8081             domain1.com

person amone    schedule 14.08.2017    source источник


Ответы (2)


Как упомянул @galkin, вам нужно передать запрос на порт 8081. Добавьте это в файл httpd.conf.

<VirtualHost *:80> 
ServerAlias domain1.com 
ProxyPass / http://ip-addresss:8081/ 
</VirtualHost>

Для ошибки 503 попробуйте запустить это и перезапустить apache.

# /usr/sbin/setsebool httpd_can_network_connect 1

person aravvn    schedule 14.08.2017

Вам нужна ProxyPass инструкция. Это будет выглядеть так:

<VirtualHost www.domain3.com:80>
    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
</VirtualHost>

Также для решения этой проблемы обычно используются NGINX + Node.js.

person galkin    schedule 14.08.2017
comment
Я пробовал ответить здесь: stackoverflow.com/questions /8541182/, но на этот раз я получаю сообщение об ошибке "Сервис недоступен". - person amone; 14.08.2017
comment
@amone, извините, это был только пример без каких-либо тестов с моей стороны. - person galkin; 14.08.2017