Endereço local do CentOS 7.2 / ProxyPass ok, localhost e erro 127.0.0.1

1

Tenha alguns hosts de desenvolvimento em que estamos tentando executar o Apache / PHP e o Node.js. ProxyPass idealmente simples para serviços de nó em execução na porta local deve funcionar, mas por algum motivo eu preciso fornecer IP de rede local, localhost dá erro 503.

$ cat nodeproxy.conf

<Directory /public/np1/site>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerName np1.local.zaptech.org
    DocumentRoot /public/np1/site

    ProxyRequests on
#   ProxyPass /np1/ http://localhost:1337/  <- doesn't work, 503 error
#   ProxyPass /np1/ http://127.0.0.1:1337/  <- doesn't work, 503 error
    ProxyPass /np1/ http://10.10.10.76:1337/
</VirtualHost>

$ cat sysd

[Unit]
Description=Node.js Example Server

[Service]
ExecStart=/bin/node /home/rickatech/node/example.js
Restart=always
RestartSec=10                       # Restart service after 10 seconds if node service crashes
StandardOutput=syslog               # Output to syslog
StandardError=syslog                # Output to syslog
SyslogIdentifier=nodejs-ricktest
User=rickatech
Environment=NODE_ENV=production PORT=1337

[Install]
WantedBy=multi-user.target
    
por rickatech 07.09.2016 / 20:17

2 respostas

2

A resposta simples seria que o serviço que está sendo executado na porta 1337 está vinculado apenas ao endereço IP principal e não ao host local, você pode usar netstat, lsof ou similar para descobrir.

Eu não sei node.js, mas tenho certeza que uma busca rápida irá encontrar posts dizendo como fazer o node.js se ligar ao localhost se não for.

Uma nota rápida, você deve sempre combinar barras à direita nas suas diretivas ProxyPass (e ProxyPassReverse). Então, por exemplo

ProxyPass /np1/ http://localhost:1337/
or
ProxyPass /np1 http://localhost:1337

em vez de

ProxyPass /np1 http://10.10.10.76:1337/
or
ProxyPass /np1/ http://10.10.10.76:1337

Normalmente, a menos que haja uma razão específica para isso, você deve ter barras nos dois.

    
por 07.09.2016 / 20:30
0

Ah, o buraco do coelho vai um pouco mais fundo ...

$ cat example.js

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {
        'Content-Type': 'text/plain'
        });
    res.end('Hello World\n');
    }).listen(1337, "10.10.10.76");  //  change this to 127.0.0.1 !

Porta está no javascript, não tenho certeza porque o sysd precisa da diretiva PORT.

    
por 07.09.2016 / 21:07