У меня есть работа Сервера порта 30.000 и порта 40.000 и если кто-то acess 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
Как правило, входящие пакеты, пытающиеся инициировать соединение, не содержали бы целевое доменное имя, только целевой IP-адрес. Поэтому нет достаточной информации для создания любых правил iptables перенаправить пакеты. Вы не можете сделать то, что Вы пытаетесь сделать.
Теперь, Вы могли бы знать, что часто веб-серверы могут иметь дело со многими различными доменами, все решающие к одному IP-адресу. Это сделано с помощью конфигурации веб-сервера, а не на уровне сетевого пакета. В конечном счете, после того как сетевое соединение было установлено, целевое доменное имя включено, и веб-сервер может решить, к каким фактическим страницам пользователь пытается получить доступ и ответить соответственно.
Не iptables
решение, но работа :)
, Решение состоит в том, чтобы использовать apache
модули mod_proxy.so
и mod_proxy_http.so
Установка mod_proxy и прокси реверса установки в Установке веб-сервера
Apache модуль
sudo apt-get install libapache2-mod-proxy-html
Установка Загрузки зависимости libxml2-dev
apt-get install libxml2-dev
, модуль
a2enmod proxy proxy_http
Создает Виртуальный Хост в апачском конфигурационном файле.
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