Problemas com Redirecionamento HTTPS no Dspace 7.6.1, Tomcat 9 e Nginx no Windows 10

Olá Comunidade do IBICT,

Espero que todos estejam bem. Estou enfrentando dificuldades com a configuração de acesso HTTPS no meu Dspace 7.6.1, utilizando Tomcat 9 e Nginx como proxy reverso em um servidor Windows 10. Esta é minha primeira instalação do Dspace, e o processo inicial ocorreu sem problemas. Consigo acessar a plataforma localmente através de “localhost:4000”. No entanto, ao configurar o Nginx e tentar acessar de fora da rede local, ocorre um redirecionamento para uma página de erro 500 após 2 segundos.

Configuração Nginx:

server {
listen 80;
server_name fevasf-repositorio.ddns.ne t;
rewrite ^ h ttps://fevasf-repositorio.ddns.net permanent;

location / {
    proxy_pass http://localhost:4000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

server {
listen 443 ssl;
server_name fevasf-repositorio.ddns.ne t;

ssl_certificate C:/nginx-1.25.3/cert/cert.pem;
ssl_certificate_key C:/nginx-1.25.3/cert/privkey.pem;

location / {
    proxy_pass http://localhost:4000;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /server {
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Host $host;
    proxy_pass http://localhost:8080/server;
}

}

Configuração “config.prod.yml”:

ui:
ssl: false
host: localhost
port: 4000
nameSpace: /
useProxies: true

rest:
ssl: false
host: localhost
port: 8080
nameSpace: /server

Configuração “local.cfg”:
space.server.url = http://localhost:8080/server
dspace.ui.url = http://localhost:4000

Configuração “server.xml” do Tomcat:

Erro no log do Nginx:
2023/12/08 13:30:18 [error] 5856#5432: *394 connect() failed (10061: Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente) while connecting to upstream, client: 192.241.215.42, server: fevasf -repositorio.ddns.net, request: “GET /autodiscover/autodiscover.json?@zdi/Powershell HTTP/1.1”, upstream: “http ://127.0.0.1:4000/autodiscover/autodiscover.json?@zdi/Powershell”, host: “189.41.79.255”

Já tentei diversas configurações sem sucesso. Será que alguém poderia me ajudar? Estou há uma semana tentando resolver esse problema. Desde já agradeço e desejo a todos um Feliz Natal!

ps- Adicionei alguns espaços em links para postar esse tópico devido a regra de segurança de usuários novos postarem apenas 2 links.

1 curtida

Bom dia Sidney,

Você consegue acessar o back-end em http://localhost:8080/server sem problemas certo?

Erro 500 geralmente indica um problema interno no servidor. Esses erros são genéricos e podem ser causados por várias razões, então vamos verificar por etapas:

Inicialmente realize o teste do front-end com o back-end de demostração da DuraSpace em config/config.prod/yml:

ui:
ssl: false
host: localhost
port: 4000
nameSpace: /
useProxies: true

rest:
ssl: true
host: demo.dspace.org
port: 443
nameSpace: /server

Certifique-se que o back-end está executando e se as configurações do banco de dados no arquivo [dspace-back]/config/local.cfg estão corretas. Realize o comando em [dspace-back]/bin/ para verificar a conexão com o banco de dados porque problemas na de conexão podem causar erros 500.

dspace database migrate

Você pode verificar também a conexão do back-end e front-end com o comando em [dspace-angular]/ a saída deve responder com “200”

yarn test:rest

Verifique também a URL do front-end com o IP da máquina ao invés de localhost. E se um firewall possa estar bloqueando o tráfego

1 curtida

Bom dia mirelecosta, obrigado pela ajuda,

1 - Consigo acessar o back-end, bem como o solr e também a aplicação em localhost:4000, no computador local, o servidor.

2 - Fiz como sugeriu aqui:

rest:
ssl: true
host: demo.dspace.org
port: 443
nameSpace: /server

O demo.dspace.org acessou normalmente. Então alterei para:

ssl: true
host: fevasf-repositorio.ddns.net
port: 443

Como resultado obtive do yarn test:rest:

ERROR connecting to REST API
Error: connect ETIMEDOUT 186.210.149.18:443
Done in 23.31s.

Mas quando uso:

ssl: false
host: localhost
port: 8080

Funciona normalmente local, com yarn test:rest:

Quanto a essa certificação:

O backend está funcionando normalmente, através do localhost:4000, consigo efetuar login, criar documentos.

A página acessada de fora da rede com o nginx, acessa o home do dspace 7, mas em 5 segundos, sou redicionado para 500, conection refused como indicado na pergunta.

Até então tenho duas teorias:

1 - Existe algum bloqueio de segurança.

Então apliquei essa configuração em local.cfg:

rest.cors.allowed-origins = *

E fiz testes de rede:

image

image

O que me provaram não ser nenhuma configuração de rede…

2 - Talvez minha configuração no local.cfg não esteja correta. Atualmente a configuração do local.cfg é:

dspace.server.url = http://localhost:8080/server
dspace.ui.url = http://localhost:4000
dspace.name = Fevasf Repositório
solr.server = http://localhost:8983/solr

Já tentei mudar:

http://localhost:8080/server **para** https://fevasf-repositorio.ddns.net e
http://localhost:4000 para https://fevasf-repositorio.ddns.net

Mas fazendo isso, perco acesso a ui do dspace local. Não compreendo também a ligação que o arquivo local.cfg tem com o config.prod.yml.


Já com o Nginx, configurei nele para teste, um site simples htmlcss, e consegui acessar normalmente com o link http://fevasf-repositorio.ddns.net.

Parece aqui que existe algum bloqueio do tomcat, ou do dspace. Ou alguma regra de segurança pra não funcionar com localhost através de reverse proxy.

Agradeço muito pela ajuda, não tem muito material disponível para suporte em windows.

Ps. Gostaria de ter adicionado mais imagens mas existe o bloqueio de quantidade de imagens para novos usuários.

Boa tarde,

Após 100 horas tentando, finalmente consegui a configuração ideal, para servidor com Windows 10 e Nginx.

Para ter acesso fora da rede, foi necessário alterar os arquivos de Local.cfg para:

dspace.server.url = https: //fevasf-repositorio.ddns.net/server
dspace.ui.url = https ://fevasf-repositorio.ddns.net

Instalei certificados e adicionei o domínio no arquivos de host do Windows.
yarn test:rest e… 100% funcionando.

Agradeço a boa vontade e fica a dica pra quem for instalar em windows com nginx.

1 curtida

@Sidney_Campos, muito obrigado por trazer a solução! Com certeza outros usuários serão beneficiados! :wink:

1 curtida

Eu tenho o mesmo problema, apenas no UBUNTU. Quais são as suas configurações do nginx

1 curtida