artzub
@artzub
Программист

Перенаправление портов по имени сайта

Добрый день.

Дано:
1. Сервер Debian Lenny.
2. DNS bind9.
3. Веб-сервер apache2, который слушает 80 порт.
4. Сервер приложении jetty, слушает 8888.

Задача:
Сделать что бы при обращении по имени ts.our происходило перенаправленние портов с 80 на 8888, как будто клиент обратился вот по такой ссылке 192.168.0.2:8888, где 192.168.0.2 это собственно ip сервера.

Помогите знающие, чем можете.
  • Вопрос задан
  • 18333 просмотра
Решения вопроса 1
artzub
@artzub Автор вопроса
Программист
В первую очередь выражаю свою благодарность inkvizitor68sl и rednaxi, что посоветовали на nginx.

А теперь решение:
первый файл ts.our (расположен в каталоге /etc/nginx/sites-available и имеет символическую ссылку в /etc/nginx/sites-enabled):
  1. upstream backend {
  2.     # Адрес back-end'a
  3.     server 192.168.0.2:8888;
  4. }
  5.  
  6. server {
  7.  
  8.     listen 80; ## listen for ipv4
  9.     listen [::]:80 default ipv6only=on; ## listen for ipv6
  10.  
  11.     server_name   www.ts.our ts.our;
  12.  
  13.     access_log   /var/www/ts/logs/ts.access.log;
  14.     error_log    /var/www/ts/logs/ts.error.log;
  15.  
  16.     location / {
  17.         access_log   /var/www/ts/logs/ts_root;
  18.         proxy_pass   http://192.168.0.2:8888;
  19.         include     /etc/nginx/proxy.conf;
  20.     }
  21.  
  22.     location /doc {
  23.         access_log   /var/www/ts/logs/ts_doc;
  24.         rewrite     ^/doc(/.*)?$ /javadoc$1;
  25.         root      /var/www/ts/core/docs/;
  26.         index      index.html;
  27.     }
  28.  
  29.     location /javadoc {
  30.         access_log   /var/www/ts/logs/ts_jdoc;
  31.         root      /var/www/ts/core/docs/;
  32.         index      index.html;
  33.     }
  34.  
  35.     # Статическиое наполнение отдает сам nginx
  36.     # back-end этим заниматься не должен
  37.     location ^~ /cssimages/ {
  38.         access_log   /var/www/ts/logs/ts_css;
  39.         root      /var/www/ts/core/webapps/TrackStudio/;
  40.         expires     max;
  41.     }
  42.  
  43.     location ^~ /icons/categories/ {
  44.         access_log   /var/www/ts/logs/ts_cat;
  45.         root      /var/www/ts/core/etc/plugins/;
  46.         expires     max;
  47.     }
  48.  
  49.     location ^~ /style/ {
  50.         access_log   /var/www/ts/logs/ts_st;
  51.         root /var/www/ts/core/webapps/TrackStudio/;
  52.     }
  53.  
  54.     location ^~ /jquery/ {
  55.         access_log   /var/www/ts/logs/ts_jq;
  56.         root /var/www/ts/core/webapps/TrackStudio/;
  57.     }
  58. }
  59.  
  60. # HTTPS server#
  61. server {
  62.     listen     443;
  63.     server_name   www.ts.our ts.our;
  64.  
  65.     location / {
  66.         proxy_pass   https://192.168.100.60:8433;
  67.         include     /etc/nginx/proxy.conf;
  68.     }
  69. }


второй это настройки proxy.conf (расположены в каталоге /etc/nginx):
  1. proxy_redirect         off;
  2. proxy_set_header        Host $host;
  3. proxy_set_header        X-Real-IP $remote_addr;
  4. proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  5. client_max_body_size      10m;
  6. client_body_buffer_size     128k;
  7. proxy_connect_timeout      90;
  8. proxy_send_timeout       90;
  9. proxy_read_timeout       90;
  10. proxy_buffer_size        4k;
  11. proxy_buffers          4 32k;
  12. proxy_busy_buffers_size     64k;
  13. proxy_temp_file_write_size   64k;


производительность возросла в разы даже не было такой когда по ip обращаешься на прямую так как все картинки и другую статику выдавали сервелеты.

надеюсь кому-то пригодится.

P.S. на jetty весит TrackStudio
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
artzub
@artzub Автор вопроса
Программист
Спасибо всем!
Нашел решение сам.
вот если кому понадобится:

<VirtualHost *:80>
  ServerName ts.our

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPass / http://192.168.0.2:8888/
  ProxyPassReverse / http://192.168.0.2:8888/
  ErrorLog /var/log/apache2/ts_error_log
  CustomLog /var/log/apache2/ts_log common
</VirtualHost>

Ответ написан
@ssergik
Пишу в этой теме так как похожий вопрос.
Значит задача такая: На VDS Server 2012 стоит программа TeamSpeak 3 Server (обмен голосовых сообщений). У этого сервера много виртуальных серверов которые сидят на портах (UDP 9987, 9988, 9999, 10025)
К серверу подключаются по типу 192.192.192.192:9987
Нужно сделать так чтобы можно было подключаться по домену третьего уровня
server.ts3.ru подключался на 192.192.192.192:9987
server2.ts3.ru подключался на 192.192.192.192:9988
server3.ts3.ru подключался на 192.192.192.192:9999
server4.ts3.ru подключался на 192.192.192.192:10025

Как это реализовать? Apache или DNS или что нужно на сервере установить чтобы это работало????
Заранее спасибо тем кто не останется равнодушным!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы