I have 2 VMs from azure portal,Manager Node and Worker Node, I am running nginx on Manager node and Laravel on worker node and this setup is causing me 504 Gateway Time-out error when I access http://manager_node_ip on browser
Nginx container logs:
2024/11/22 06:57:15 [error] 28#28: *6 upstream timed out (110: Connection timed out) while connecting to upstream, client: 10.0.0.2, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://10.0.1.16:9000", host: "4.257.122.69"
When I put nginx and laravel on manager node then it simply works.
Following are my files:
docker-stack.yml
version: '3.8'
services:
laravel:
image: dinesh/api_backend:uat-1.0 # Use your hosted image
deploy:
placement:
constraints: [node.role == worker]
replicas: 1
environment:
RABBITMQ_HOST: rabbitmq
RABBITMQ_PORT: 5672
RABBITMQ_USER: guest
RABBITMQ_PASSWORD: guest
RABBITMQ_VHOST: /
RABBITMQ_QUEUE: default
ports:
- "9000:9000"
networks:
- laravel-network
volumes:
- laravel-data:/var/www
scheduler:
image: dinesh/api_backend:uat-1.0 # Use the same image
deploy:
replicas: 1
entrypoint: ["sh", "-c", "while true; do php artisan schedule:run --verbose --no-interaction; sleep 60; done"]
networks:
- laravel-network
worker:
image: dinesh/api_backend:uat-1.0 # Use the same image
deploy:
replicas: 1
entrypoint: ["sh", "-c", "php artisan queue:work --verbose --tries=3 --timeout=90"]
depends_on:
- rabbitmq
networks:
- laravel-network
nginx:
image: nginx:latest
deploy:
placement:
constraints: [node.role == manager]
replicas: 1
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- laravel-data:/var/www
depends_on:
- laravel
networks:
- laravel-network
rabbitmq:
image: rabbitmq:3-management
deploy:
replicas: 1
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
volumes:
- ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
- rabbitmq-data:/var/lib/rabbitmq
networks:
- laravel-network
command: ["rabbitmq-server"]
init: true
networks:
laravel-network:
driver: overlay
attachable: true
volumes:
laravel-data:
driver: local
rabbitmq-data:
driver: local
rabbitmq.conf
default_queue_type = durable
nginx.conf
server {
listen 80;
server_name localhost;
root /var/www/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass laravel:9000; # Laravel service name and PHP-FPM port
fastcgi_read_timeout 3600;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}