12/08/2018, 13:30

Cấu hình nginx share hosting nhiều domain

Hẳn hầu hết với mỗi lập trình viên web đều biết đến Nginx có thể cấu hình để share hosting nhiều ứng dụng web ở các tên miền khác nhau. Đối với lập trình viên PHP, việc lập trình đồng thời một lúc nhiều dự án là điều gần như bắt buộc. Môi trường thực hành: Mountain Lion 10.8.4 Nginx 1.5.5, PHP ...

Hẳn hầu hết với mỗi lập trình viên web đều biết đến Nginx có thể cấu hình để share hosting nhiều ứng dụng web ở các tên miền khác nhau. Đối với lập trình viên PHP, việc lập trình đồng thời một lúc nhiều dự án là điều gần như bắt buộc.

Môi trường thực hành:

Mountain Lion 10.8.4 Nginx 1.5.5, PHP 5.5.4 cùng với PHP-FPM

Thư mục quan trọng mọi cấu hình đều diễn ra ở đây /usr/local/etc/nginx

cd /usr/local/etc/nginx
nano nginx.conf

Cấu hình trong nginx.conf càng đơn giản càng tốt. Chúng ta sẽ bổ xung cấu hình chi tiết ở các file cấu hình riêng cho từng domain.

worker_processes  2;  #mặc định là 1 CPU càng nhiều core thì có thể tăng lên nhưng không được vượt quá số core tối đa của CPU.
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
    include conf.d/*.conf;
    include sites-enabled/*;  #Dòng lệnh này sẽ include thêm cấu hình cho từng do ứng dụng web sẽ share hosting
}

Tạo thư mục site-enabled trong /usr/local/etc/nginx để chưa các file cấu hình cho từng ứng dụng web. Ví dụ tôi có 3 web site đang phát triển là: conair.com, audiogara.com, và macx.com. Các bước sau đây sẽ tạo ra các file cấu hình cho từng ứng dụng web trong thư mục site-enabled:

cd /usr/local/etc/nginx #chuyển đến thư mục cấu hình nginx
ls #dir thư mục xem có gì
mkdir sites-enabled #tạo thư mục để chứa các file cấu hình cho từng web site shared hosting
cd sites-enabled #chuyển vào bên trong đó
nano audiogara.com #dùng trình nano soạn thảo nội dung file cấu hình audiogara.com

Nội dung file cấu hình cho web site audiogara.com. Lưu ý chuyển tới thư mục /usr/local/var/www rồi gõ lệnh Phalcon Devtools phalcon project audiogara.com để tạo khung dự án đặt trong thư mục audiogara.com

server {
        listen   80;
        index index.php index.html index.htm;
        set $root_path '/usr/local/var/www/audiogara.com/public';  #Đối với ứng dụng PHP Phalcon thư mục root sẽ là public nằm trong thư mục dự án
        root $root_path;

        server_name audiogara.com;  #Tên miền ứng dụng. Cần sửa file /etc/hosts để ánh xạ 127.0.0.1 audiogara.com
        try_files $uri $uri/ @rewrite;

        location @rewrite {
                rewrite ^/(.*)$ /index.php?_url=/$1;
        }
        #Cấu hình để gọi tới PHP-FPM FastCGI ở cổng 9000
        location ~ .php {
                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass 127.0.0.1:9000;
        }

        location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
                root $root_path;
        }
        #bỏ qua các file .htaccess
        location ~ /.ht {
                deny all;
        }
}

Sửa đổi file host

Các ứng dụng web trong lúc phát triển ở máy local cần gán tên miền vào IP của localhost là 127.0.0.1

sudo nano /etc/hosts  #mở file hosts ra để sửa
#Bổ xung các dòng dưới đây vào hosts.
#Các tên miền cùng trỏ vào một địa chỉ 127.0.0.1
127.0.0.1 conair.com
127.0.0.1 audiogara.com
127.0.0.1 macx.com
0