Переадресация портов с domain1.com:25565 на 40000 и с domain2.com:25565 на 30000
У меня есть Сервер, работающий через порт 30.000 и порт 40.000, и если кто-то получает доступ к domain1.com:25565, он должен подключиться к локальному порту 40.000, а если он подключается через domain2.com:25565, он должен подключиться к локальному порту 30.000
domain1.com:25565 -> 37.120.174.183:25565 -> localhost: 40000
domain2.com:25565 -> 37.120.174.183:25565 -> localhost: 30000
3 ответа
Как правило, входящие пакеты, пытающиеся инициировать соединение, не будут содержать имя домена назначения, только IP-адрес назначения. Поэтому для создания каких-либо правил iptables для перенаправления пакетов недостаточно информации. Вы не можете делать то, что вы пытаетесь сделать.
Теперь вы, возможно, знаете, что часто веб-серверы могут работать со многими разными доменами, все из которых разрешаются на один IP-адрес. Это делается через конфигурацию веб-сервера, а не на уровне сетевых пакетов. В конце концов, после того как сетевое соединение было установлено, включается имя домена назначения, и веб-сервер может решить, к каким фактическим страницам пользователь пытается получить доступ, и ответить соответствующим образом.
Не является iptables
решение но работает:)
Решение заключается в использовании apache
модули mod_proxy.so
а также mod_proxy_http.so
Установите mod_proxy и настройте обратный прокси-сервер в Apache Webserver
Установите модуль
sudo apt-get install libapache2-mod-proxy-html
Установка зависимости libxml2-dev
apt-get install libxml2-dev
Загрузите модуль
a2enmod proxy proxy_http
Создайте виртуальный хост в файле конфигурации Apache.
sudo nano /etc/apache2/sites-enabled/000-default
Listen 40000
Listen 30000
<VirtualHost *:25565>
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/vhosts/domain1.com
<Directory /var/www/vhosts/domain1.com>
Options -Indexes FollowSymLinks -MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
CustomLog /var/log/httpd/domain1.com-access.log combined
ErrorLog /var/log/httpd/domain1.com-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
ProxyPass / http://domain1.com:40000/
ProxyPassReverse / http://domain1.com:40000/
</VirtualHost>
<VirtualHost *:40000>
ServerName domain1.com
ServerAlias www.domain1.com
#### This is where you put your files for that domain: /var/www/vhosts/domain1.com
DocumentRoot /var/www/vhosts/domain1.com
</VirtualHost>
<VirtualHost *:25565>
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/vhosts/domain1.com
<Directory /var/www/vhosts/domain2.com>
Options -Indexes FollowSymLinks -MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
CustomLog /var/log/httpd/domain2.com-access.log combined
ErrorLog /var/log/httpd/domain2.com-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
ProxyPass / http://domain2.com:30000/
ProxyPassReverse / http://domain2.com:30000/
</VirtualHost>
<VirtualHost *:30000>
ServerName domain2.com
ServerAlias www.domain2.com
#### This is where you put your files for that domain: /var/www/vhosts/domain2.com
DocumentRoot /var/www/vhosts/domain2.com
</VirtualHost>
Теперь перезагрузите апач
/etc/init.d/apache2 restart
Только остается запретить доступ с iptables
для внешней сети на портах 30000
а также 40000
так как apache
использование localhost
,
Хотя mod-proxy
от Apache может работать, лучшее решение для вашей проблемы - использование обратного прокси, такого как haproxy
,
устанавливать haproxy
с помощью этой команды:
sudo apt-get install haproxy
затем отредактируйте файл конфигурации следующим образом:
sudo nano /etc/haproxy.cfg
поместите эти строки в файл конфигурации
//Put this in the file
global
daemon
maxconn 4096
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:25565
acl is_site1 hdr_end(host) -i domain1.com
acl is_site2 hdr_end(host) -i domain2.com
use_backend site1 if is_site1
use_backend site2 if is_site2
backend site1
balance roundrobin
option httpclose
option forwardfor
server s2 127.0.0.1:40000 maxconn 32
backend site2
balance roundrobin
option httpclose
option forwardfor
server s1 127.0.0.1:30000 maxconn 32
listen admin
bind 127.0.0.1:8080
stats enable
Запустите / перезагрузите сервер, используя:
sudo /usr/sbin/haproxy -f /etc/haproxy.cfg -D -p /var/run/haproxy.pid