Virtualhost não está funcionando em porta diferente

7

Estou tentando hospedar meu site em um único servidor executando o centos7.1. Eu sou capaz de virtualhost na porta 80 mas quando eu mudo a porta de second-site para 8080 , ele aponta para first-site . No entanto, para o URL http://62.210.xx.xx:8080/ está funcionando corretamente, apontando para second-site .

Estou fazendo assim:

link

Listen 80
Listen 8080

also tried 
Listen 0.0.0.0:80
Listen 0.0.0.0:8080
but same

commented out for apache 2.4
#NameVirtualHost 62.210.xx.xx:80
#NameVirtualHost 62.210.xx.xx:8080

ServerAdmin root@localhost

#first-site.com
<VirtualHost 62.210.xx.xx:80>
ServerName first-site.com
ServerAlias www.first-site.com
DocumentRoot /var/www/first-site
</VirtualHost>

#second-site.com
<VirtualHost 62.210.xx.xx:8080>
ServerName second-site.com
ServerAlias www.second-site.com
DocumentRoot /var/www/second-site
</VirtualHost>


netstat -tulpn | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      25253/httpd
tcp6       0      0 :::8080                 :::*                    LISTEN      25253/httpd


/etc/host/
62.210.xx.xx www.first-site.com first-site.com www.second-site.com second-site.com

/usr/sbin/httpd -t
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:46
Syntax OK

Atualizar

apachectl -S
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, 
using 62.210.xx.xx. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
62.210.xx.xx:8080      m.second-site.com (/etc/httpd/conf/httpd.conf:427)
62.210.xx.xx:80        is a NameVirtualHost
     default server first-site.com (/etc/httpd/conf/httpd.conf:363)
     port 80 namevhost first-site.com (/etc/httpd/conf/httpd.conf:363)
             alias www.first-site.com
     port 80 namevhost image.first-site.com (/etc/httpd/conf/httpd.conf:3                                                                             77)
     port 80 namevhost m.first-site.com (/etc/httpd/conf/httpd.conf:389)
     port 80 namevhost second-site.com (/etc/httpd/conf/httpd.conf:401)
             alias www.second-site.com
     port 80 namevhost image.second-site.com (/etc/httpd/conf/httpd.conf:415)
     port 80 namevhost third-site.com (/etc/httpd/conf/httpd.conf:439)
             alias www.third-site.com
     port 80 namevhost image.third-site.com (/etc/httpd/conf/httpd.conf:453)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex fcgid-pipe: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex fcgid-proctbl: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="xxxxxxx" id=1000
Group: name="root" id=0
    
por Tall boY 01.12.2015 / 09:09

5 respostas

1

Como Inigo Flores já apontou, esse é o comportamento padrão do apache.

Ao digitar second-site.com em seu navegador, ele sempre se conectará à porta 80. Se você deseja acessar uma porta diferente, é necessário especificá-la no URL como second-site.com:8080

Se você quiser acessar seu site como second-site.com, não faz sentido usar portas diferentes.

    
por 08.12.2015 / 15:24
4

Você precisa decidir se está usando hosts virtuais baseados em nome ou baseados em IP / port. Você atualmente tem os dois misturados juntos.

Se você vai colocar servidores em suas próprias portas, então você não deve definir NameVirtualHost para essas portas. Quando você define que para o host e a porta em que a solicitação chega, o apache escolhe a configuração do virtalhost para usar na base de servername e serveraliases .

Não estou claro se o Apache estará preparado para escolher um host virtual com base no nome de domínio quando esse bloco de virtualhost for definido usando um IP / porta diferente. O que você está descrevendo parece que pode ser o que está acontecendo.

No seu arquivo /etc/hosts , você especifica first-site.com e second-site.com . Nenhum destes são hosts virtuais definidos, já que para aqueles que você usa o prefixo www. . Se você estiver usando virtualhosts baseados em nome, você presumivelmente deseja adicionar diretivas ServerAlias aos seus blocos de virtualhost. Enquanto isso, seu parágrafo de abertura usa uma abreviação inútil para os sites aos quais você está se referindo - seria melhor mudar isso para fazer referência à (s) URL (s) exata (s) com a qual você está tendo problemas.

    
por 03.12.2015 / 15:00
4

Tente fazer com que a declaração Listen corresponda ao seu VirtualHost .

Se você quiser apenas vincular ao IP público 62.210.xx.xx, use-o em todos os lugares.

Listen 62.210.xx.xx:80
Listen 62.210.xx.xx:8080

<VirtualHost 62.210.xx.xx:80>
  ServerName first-site.com
  ServerAlias www.first-site.com
  DocumentRoot /var/www/first-site
</VirtualHost>

<VirtualHost 62.210.xx.xx:8080>
  ServerName second-site.com
  ServerAlias www.second-site.com
  DocumentRoot /var/www/second-site
</VirtualHost>

- ou -

Se você deseja vincular a todas as interfaces nesse servidor, use curingas.

Listen 80
Listen 8080

<VirtualHost *:80>
  ServerName first-site.com
  ServerAlias www.first-site.com
  DocumentRoot /var/www/first-site
</VirtualHost>

<VirtualHost *:8080>
  ServerName second-site.com
  ServerAlias www.second-site.com
  DocumentRoot /var/www/second-site
</VirtualHost>

Essencialmente, a instrução Listen diz ao apache para ligar a esse IP / port. Especificar 0.0.0.0:80 apenas escutaria em endereços ipv4. Especificar apenas o número da porta seria vinculado a todas as interfaces na porta 80.

Da mesma forma, quando os pacotes SYN chegam, a instrução VirtualHost tenta corresponder com base nas instruções Listen .

    
por 04.12.2015 / 07:11
2

O que você está enfrentando é o comportamento padrão de acordo com a documentação do Apache .

Anyrequesttoanaddressotherthan172.20.30.50willbeservedfromthemainserver.Arequestto172.20.30.50withanunknownhostname,ornoHost:header,willbeservedfromwww.example.com.

Portanto,paraalcançarohostvirtualdosecond-site.com,vocêprecisafazê-lopormeiode link .

Certifique-se de incluir esses nomes de domínio em seu arquivo hosts local (por exemplo, /etc/hosts , C:\Windows\System32\drivers\etc\hosts etc.), caso ainda não tenha configurado o DNS. Se isso não for uma opção, você também pode configurar um nome de host dinâmico com DynDNS ou outro provedor e usá-lo para seu ServerName / ServerAlias.

    
por 06.12.2015 / 13:00
1

É 62.210.xx.xx o IP do seu servidor ou um IP NAT antes do seu servidor? Você deve ter o IP real do servidor no VirtualHost, e aquele pelo qual a solicitação está chegando se você tiver muitos IP no servidor.

    
por 04.12.2015 / 21:03