/home/nginx-with-remote-php-fpm

Cài đặt nginx và php-fpm ở 2 server khác nhau

Published on | Updated

Hướng dẫn setup nginx và php-fpm được đặt ở 2 server khác nhau. Hoặc cụm server có private IP như digital ocean hoặc Amazon Web Service

Trong bài viết này, mình sử dụng 2 server ubuntu và có kết nối qua LAN IP ( private IP ), 2 server đã được mở port LAN.

Server chứa Nginx được gọi là server A với IP: 192.168.0.1, server chứa php-fpm được gọi là server B với IP 192.168.0.2.

Cả 2 server đã được cài đặt nginx và php-fpm để sẵn sàng.

Cấu hình php-fpm: /etc/php/7.2/fpm/pool.d/www.conf


; chuyển từ unix sang tcp/ip
listen = 9000
; cho phép các ip được kết nối với php-fpm
listen.allowed_clients = 127.0.0.1,192.168.0.1,192.168.0.2

Restart lại php-fpm


sudo /etc/init.d/php7.2-fpm restart

Cấu hình nginx: /etc/nginx/sites-available/demo.dungnt.net.conf


server {
    listen 80;
    listen [::]:80;

    server_name demo.dungnt.net.conf;

    #access_log /var/log/nginx/access_log.log;
    #error_log /var/log/nginx/error_log.log;

    root /var/www/demo.dungnt.net;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass 192.168.0.2:9000;
    }

   location ~/\.ht {
        deny all;
    }
}

Check nginx config


sudo nginx -t

Restart nginx config


sudo nginx -s reload

Tuy nhiên chưa chạy được, do server B chỉ xử lý PHP. và mong muốn xử lý các file tĩnh trực tiếp từ nginx nên cần mount file từ server B sang server A.

server A: cần cài thêm gói sshfs để mount qua ssh


sudo apt install sshfs

Sau đó mount thư mục chứa code ở server sang server A qua ssh


sshfs -o allow_other,default_permissions [email protected]:/var/www/demo.dungnt.net /var/www/demo.dungnt.net

thư mục chứa code ở server B: [email protected]:/var/www/demo.dungnt.net
thư mục chứa code được mount ở server A: /var/www/demo.dungnt.net

All done. Vậy là có thể truy cập được rồi.