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.