Как сделать так, чтобы ip указывал на другой ip и порт (с двух apache виртуальных хостов) на AWS - PullRequest
0 голосов
/ 13 января 2020

Мне нужно иметь разные IP-адреса, указывающие на указанный c IP-адрес и порт на экземпляре EC2, где у меня несколько сайтов на виртуальных хостах Apache Например: xx.xx.xx.xx -> 107.22.56.213:8080 гг.гг.гг.гг -> 107.22.56.213:8081

Это возможно на AWS?

РЕДАКТ. 1:

ОК I подключили два разных IP-адреса к одному экземпляру. Но у меня возникают проблемы при настройке обратного прокси-сервера, мой 000-default.conf выглядит так:

<VirtualHost 54.158.187.139:80>
  ProxyPass / 127.0.0.1:8080
  ProxyPassReverse / 127.0.0.1:8080
</VirtualHost>
<VirtualHost 35.153.37.243:80>
  ProxyPass / 127.0.0.1:8081
  ProxyPassReverse / 127.0.0.1:8081
</VirtualHost>

Но он все еще показывает сайт по умолчанию 000-по умолчанию, и я уже перезапустил службу apache2

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Я знаю, что это не на 100% то, что вы просили, но легко поставить сервер NGINX перед Apache, и он работает лучше в большинстве случаев. Nginx config (с кэшированием) так же просто, как ...

http{

    proxy_cache_path /my_nginx_cache_folder levels=1:2 keys_zone=my_nginx_cache:2g max_size=2g
                     inactive=30d use_temp_path=off;


    server {

        listen       443 ssl;
        server_name  www.mydomain.com;

        ssl_certificate         /etc/letsencrypt/live/www.mydomain.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/www.mydomain.com/privkey.pem; 

        location / {

                proxy_pass  http://mydomain-on-anotherip.com:8081;

                # the domain to request at the above IP
                proxy_set_header Host      mydomain.com;

                proxy_set_header X-Real-IP $remote_addr;

                # for this path, tell it to use the cache defined above
                proxy_cache             my_nginx_cache;

        } 
    } 
}

Я сделал это на многих моих серверах, и это прекрасно работает, и на вашем исходном сервере вы можете указать заголовки кэша, так что что верхний сервер NGINX будет кэшировать их до тех пор, пока вы укажете:

<?php 
    $cache_seconds = 60*60*24;
    header("Expires: ".gmdate('D, d M Y H:i:s \G\M\T', time()+$cache_seconds));
    header("Cache-Control:public, max-age=".$cache_seconds); 
?>

При аналогичной конфигурации моя статистика показывает, что страницы загружаются за 0,250 секунды, а не с 0,800 секунды.

0 голосов
/ 14 января 2020

Вы можете подключить несколько сетевых интерфейсов elasti c на своем сервере ec2 и подключить каждый ENI с elasti c IP, вы можете настроить свой виртуальный aoache для прослушивания указанного c IP и указанного c порта:

Это очень полезный блог

https://aws.amazon.com/blogs/aws/multiple-ip-addresses-for-ec2-instances-in-a-virtual-private-cloud/ https://vannstudios.com/how-to-set-up-multiple-elastic-ip-for-amazon-ec2-instance

для прокси URL ниже имеет похожий случай Вам:

https://serverfault.com/questions/557478/apache-reverse-proxy-forwarding-different-source-ip-ranges-to-different-destinat

RewriteCond %{REMOTE_ADDR} 54.158.187.139
RewriteRule ^/(.*) http://127.0.0.1:8080/$1 [P]
ProxyPassReverse / http://127.0.0.1:8080 

RewriteCond %{REMOTE_ADDR} 35.153.37.243
RewriteRule ^/(.*) http://127.0.0.1:8081/$1 [P]
ProxyPassReverse / http://127.0.0.1:8081/ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...