Node.js e PHP na porta 80 no mesmo servidor

Node.js e PHP na porta 80 no mesmo servidor

Tenho um site node.js em execução na porta 8080 do meu servidor Linux. Também tenho, no mesmo sarver, um site PHP (bugzilla) rodando na porta 80. Então minha configuração atual é:

Quero que os dois sites sejam executados na porta 80 assim:

Isso é possível?

Responder1

Em primeiro lugar, desative os dois serviços na sua máquina. em seguida, altere suas portas para algo incomum e reinicie-as, por exemplo:

  • Aplicação PHP ativada6821

  • Aplicação NodeJS em6822

Lembre-se de abri-los em 127.0.0.1! você não deve abri-los em sua interface de rede.


Instale nginxcomo o mais usado Reverse Proxy. Dependendo da sua distribuição, você pode instalá-lo com um destes comandos:

Para distribuições baseadas em Debian:

$ sudo apt install nginx

Para distribuições baseadas em Arch:

$ sudo pacman -S nginx

Depende totalmente da sua distribuição novamente, este pacote pode ter seus próprios arquivos hierárquicos. então darei a você apenas nginx.confo arquivo de configuração principal.Lembre-se de copiar o arquivo de configuração original com o nome de sua preferência, algo como nginx.conf.origin

$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.origin

Agora, abra /etc/nginx/nginx.conf, remova as configurações existentes e copie estas configurações dentro dele:

user nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    keepalive_timeout  15;

    server {
        listen       80 default_server;
        server_name  example.com; 

        location /mynodejs {
            proxy_pass http://127.0.0.1:6822;
        }

        location /bugzilla {
            proxy_pass http://127.0.0.1:6821;
        }
    }
}

Aviso: Considere que escrevi este arquivo de configuração mentalmente e, por causa disso, você provavelmente enfrentará um erro ao executar o nginx. Se sim, por favor escreva um comentário aqui, então vou testar.

Agora, basta reiniciar o seu nginx! Você conseguirá o que deseja.

Responder2

O aplicativo php pode permanecer onde não foi modificado.

Ao usar o apache como servidor web, os módulos proxy precisam estar habilitados. No Ubuntu por exemplo

a2enmod proxy
a2enmod proxy_http

E modifique seu host virtual com as linhas ProxyPasse ProxyPassReverse.

<VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot "/var/www/www.example.com/htdocs"
        #nodejs app
        ProxyPass /mynodejs http://127.0.0.1:8080/
        ProxyPassReverse /mynodejs http://127.0.0.1:8080/
<Directory "/var/www/www.example.com/htdocs"> 
        Options -Indexes +FollowSymLinks
        AllowOverride All 
        Order allow,deny 
        Allow from all 
</Directory>
        ErrorLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/error_log" 
        CustomLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/access_log" combined 
</VirtualHost>

Reinicie o Apache /etc/init.d/apache2 restart.

informação relacionada