Fórum Ubuntu Linux - PT
Suporte Técnico => Servidores => Tópico iniciado por: PauloGonvalves em 08 de Dezembro de 2021, 09:21
-
Boas gente,
Já estou farto de partir a cabeça e não estou a ter sucesso.
Estou com o Ubuntu Desktop 21.10 atraves de uma VMWare
* ifconfig
192.168.160.140
A correr -> "nginx" no porto 80
-> "web api dotnet" no porto 5000
Firewall
--------
* sudo ufw status verbose
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
80/tcp ALLOW IN Anywhere
443 ALLOW IN Anywhere
Anywhere ALLOW IN 192.168.1.12 (IP do windows)
Anywhere ALLOW IN 192.168.160.140 (IP do Ubuntu)
5000/tcp ALLOW IN Anywhere
80/tcp (v6) ALLOW IN Anywhere (v6)
443 (v6) ALLOW IN Anywhere (v6)
5000/tcp (v6) ALLOW IN Anywhere (v6)
-----------------------------------------------
Chamadas com sucesso no ubuntu:
http://localhost
http://localhost:5000/weatherforecast
** Questão UM:
Porque dentro do Ubuntu tenho erro "Unable to connect" com:
http://192.168.160.140
http://192.168.160.140:5000/weatherforecast
Que me falta abrir ou configurar para o ubuntu aceitar chamadas do proprio IP da maquina ?
** Questão DOIS:
No windows tenho sucesso com:
http://192.168.160.140:80
mas NÃO tenho sucesso com
http://192.168.160.140:5000/weatherforecast
Que me falta abrir ou configurar no ubuntu para aceitar chamadas publicas para o porto 5000 ?
Obrigado
PauloGoncalves
-
Boa noite Paulo,
Execute o comando abaixo em uma janela de comandos e cole o resultado aqui, por favor.
netstat -atunpe | egrep ":(80|443|5000)"
-
Boas zekkerj,
Aqui vai resposta teu pedido...
# sudo netstat -atunpe | egrep ":(80|443|5000)"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 37074
tcp6 0 0 :::80 ::: * LISTEN 0 37075
*Porque o serviço net6 que está no porto 5000 não recebe pedidos externos e o nginx no porto 80 recebe?
Thanks
-
Pq o serviço net6 não está ouvindo a porta 5000, nem a porta 443.
Revise a configuração do nginx.
-
Boas,
Bolas esqueci-me de correr a App em net6, agora sim, este é o resultado de: # sudo netstat -atunpe | egrep ":(80|443|5000)"
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1000 55060 3300/./FirstApp
tcp 0 0 127.0.0.1:5001 0.0.0.0:* LISTEN 1000 55067 3300/./FirstApp
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 40018 951/nginx: master p
tcp6 0 0 ::1:5000 :::* LISTEN 1000 55066 3300/./FirstApp
tcp6 0 0 ::1:5001 :::* LISTEN 1000 55068 3300/./FirstApp
tcp6 0 0 :::80 :::* LISTEN 0 40019 951/nginx: master p
'nginx:master' dá resposta a pedidos externos ao servidor e 'FirstApp' só responde a pedidos dentro do servidor.
-
OK.
Veja só: as portas 5000 e 5001 só parecem estar ouvindo em localhost, então você não vai conseguir conexão direta com elas a partir de outras máquinas.
Vc fica dependendo do nginx receber os pedidos e redirecionar para a aplicação em localhost:5000.
Sugiro que vc investigue nos logs do nginx se há alguma pista de porque isso não está acontecendo.
-
Obrigado pela ajuda...
Mas eu só instalei o nginx para fazer testes e tentar reduzir o dominio do erro.
Uma WebApi em net6 ela propria é um servidor (Kestrel), assim como uma app em java+spring tem embutido um servidor tomcat (acho).
Quando excuto a aplicação: ./FirstApp
Mostra na consola o seguinte:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
Dizes tu: "Veja só: as portas 5000 e 5001 só parecem estar ouvindo em localhost, então você não vai conseguir conexão direta com elas a partir de outras máquinas."
Então que achas que deveria dizer?
Now listening on: http://localhost:5000 ?!?!?!?!?!
Em vez de "localhost" deveria dizer que IP ou o quê?
Obrigado
-
Eu não conheço essa aplicação, então não posso opinar sobre como ela deveria estar funcionando.
O que posso afirmar é que, para que você possa fazer conexão direta com a porta 5000, a aplicação precisa estar conectada ou ao IP externo, ou, o que é mais recomendável, ao endereço "0.0.0.0" (ou IPv6 "::"), que significa que ela está "ouvindo" todos os endereços ativos da máquina. Claro que isso tem implicações, e novamente, não conheço a aplicação, então não sei quais implicações seriam essas.
O nginx seria uma boa forma de vc redirecionar pedidos vindos de outras máquinas para essa aplicação sem ter que reconfigurá-la. Outra alternativa, mais pesada, seria o Apache. Mas tanto um quanto o outro vão exigir de você uma configuração para isso funcionar. Acho que no momento é o que está faltando, acertar essa configuração.
Quando estiver correta, você vai conseguir acessar sua aplicação usando algo como "http://192.168.160.140/FirstApp/", ou ainda "https://192.168.160.140/FirstApp/", o que seria ainda melhor.
Minha recomendação/sugestão é que você investigue um pouco mais o nginx, acredito que será de bom proveito para seu projeto.
Dê retornos!!!
-
Boas zekkerj ,
Sucesso, Consegui :D :D
com a dica/explicação que me deste encontrei a resposta na net; keyword -> ip "0.0.0.0"
Linha de commando:
./FirstApp --urls "http://0.0.0.0:5000;https://0.0.0.0:5001"
consola:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://0.0.0.0:5000
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://0.0.0.0:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
E já consigo fazer pedidos fora do servidor :D
Muito obrigado zekkerj !!!!
Preciso estudar "redes" para efectivamente perceber a logica dos IPs.... ::)