1
resposta

proxy reverso com aplciação PHP

Olá, bom dia. estou com um problema em uma aplciação PHP. tenho um compose com algumas aplicações essa PHP e outras java. as aplicações java funcionaram de forma correta, mas a aplicação PHP não. estou usando o nginx com proxy reverso. A aplicação PHP fica sem a estilização e img fica um HTML puro. meu compose:

services:
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx/
    networks:
      dspace-rede:
        ipv4_address: 172.20.0.8
ojs:
    image: ojs:v4
    container_name: ojs
    #ports:
      #- "8083:80"
    volumes:
      - /ojs/ojs:/var/www/html
      - /ojs/logs:/var/log/apache2/
      - /ojs/files:/ojs/files
      #- ./apache2.conf:/etc/apache2/apache2.conf
    depends_on:
      - postgres
    environment:
      DSPACE_DB_HOST: postgres
      DSPACE_DB_NAME: journal
      DSPACE_DB_USERNAME: postgres
      DSPACE_DB_PASSWORD: xx
    networks:
      dspace-rede:
        ipv4_address: 172.20.0.7
networks:
  dspace-rede:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16

meu nginx.conf

events {
    worker_connections 1024;  # Define o número máximo de conexões simultâneas por trabalhador
}

http {
    server {
        listen 80;
        server_name ojsteste.ufma.br;
        location  / {
            proxy_pass http://ojs;   # nome do container no compose 
        }
    }
}

faz o redirecionamento de forma correta mas não inicializa a aplicação completamente. fiz os teste mapeando as portas e a aplicação funciona perfeitamente.

1 resposta

Olá, Thiago.

Tudo bem?

Pelo que você descreveu, parece que o NGINX está conseguindo redirecionar para a aplicação, mas os arquivos estáticos (como CSS e imagens) não estão sendo carregados corretamente. Isso geralmente acontece porque o caminho para esses arquivos não está sendo interpretado corretamente pelo servidor de proxy.

Uma solução comum é ajustar a configuração do NGINX para corretamente servir ou redirecionar esses arquivos estáticos. Aqui está uma sugestão de como você pode ajustar seu arquivo nginx.conf para tentar resolver esse problema:

events {
    worker_connections 1024;  # Define o número máximo de conexões simultâneas por trabalhador
}

http {
    server {
        listen 80;
        server_name ojsteste.ufma.br;

        location / {
            proxy_pass http://ojs;   # nome do container no compose 
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }

        # Configuração para arquivos estáticos
        location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg)$ {
            proxy_pass http://ojs;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Neste exemplo, adicionei uma nova seção location para os arquivos estáticos. Essa configuração tenta garantir que os pedidos para arquivos estáticos sejam também encaminhados para a aplicação PHP, mantendo as informações originais do pedido, o que pode ser necessário para que a aplicação saiba como responder corretamente.

Certifique-se de reiniciar o serviço do NGINX após fazer essas alterações para que elas tenham efeito.

Espero ter ajudado. Qualquer dúvida manda aqui de novo. Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software