LEMP [Phần 2] – Thêm VirtualHost (thêm domain) cho NGINX

sohoa24h.net – Ở bài trước chúng ta đã cài thành công NGINX và PHP-FPM phiên bản mới nhất vào VPS sử dụng CentOS 6.5 rồi, nhưng ở đó mình chưa hướng dẫn bạn thêm domain vào VPS và tạo thư mục riêng cho domain đó, nên ở đây mình sẽ hướng dẫn:

– Thiết lập lại các thư mục cấu hình NGINX.

– Cách thêm một VirtualHost.

Tại sao mình lại cần thiết lập lại thư mục cấu hình NGINX? Là bởi vì để sau này bạn sẽ dễ dàng thêm các domain khác vào, chỉ cần copy vài ba lệnh thôi là được, mình sẽ hướng dẫn ở cuối bài.

Mục lục nội dung

I. Thiết lập lại thư mục cấu hình NGINX

II. Thêm VirtualHost vào NGINX

I. Thiết lập lại thư mục cấu hình NGINX

Bước này bạn chỉ cần làm 1 lần duy nhất.

Trước khi tiến hành tái thiết lập thư mục cấu hình thì mình sẽ cần bạn hiểu qua vì sao chúng ta nên làm thế. Bây giờ bạn hãy mở file default.conf trong thư mục /etc/nginx/conf.d/ lên, trong đó có đoạn :

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ .php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    #    deny  all;
    #}

Các đoạn này mình đều sẽ sử dụng trên nhiều domain khác nhau nên chúng ta sẽ đem từng phần trong đó bỏ sang từng file riêng lẻ, sau đó sử dụng cú pháp include trong NGINX để nhúng các file này vào VirtualHost, vừa chuyên nghiệp lại gọn gàng.

Do vậy, bạn hãy xóa hết toàn bộ đoạn ở trên đi nhé và bắt đầu tạo các file dưới đây, các file này bạn đều tạo trong thư mục /etc/nginx/conf.d/ nhé.

Đầu tiên tạo file php.conf và bỏ nội dung này vào:

# Ép xử lý PHP thông qua PHP-FPM
location ~* .php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    # Thiết lập timeout cho proxy
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 512k;
    fastcgi_buffers 512 16k;
    fastcgi_busy_buffers_size 512k;
    fastcgi_temp_file_write_size 512k;
    fastcgi_intercept_errors on;
}

Nếu bạn dùng Xenforo, hãy xóa các đoạn dưới # Thiết lập timeout cho proxy đi.

Tiếp tục tạo file block.conf để chặn các file/thư mục không cho truy cập

location = /robots.txt  { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; expires 30d; }
location ~ /.          { access_log off; log_not_found off; deny all; }
location ~ ~$           { access_log off; log_not_found off; deny all; }
location ~ /.git { access_log off; log_not_found off; deny all; }
location = /nginx.conf { access_log off; log_not_found off; deny all; }

Tạo thêm file tên staticfiles.conf và chèn đoạn sau vào:

location ~* .(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xls
x|pdf|iso|eot|svg|ttf|woff)$ {
    gzip_static off;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
    expires max;
    break;
}
location ~* .(css|js)$ {
    #add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
    expires 30d;
    break;
}

Sau đó mở file default.conf ra và tìm:

#access_log  /var/log/nginx/log/host.access.log  main;

Thêm đoạn này vào dưới nó:

root   /usr/share/nginx/html;

Đồng thời xóa 2 đoạn có trong location / {.

Sau đó chèn 3 đoạn này vào trước dấu } ở cuối file.

include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/staticfiles.conf;
include /etc/nginx/conf.d/block.conf;

Sửa và chèn xong thì file default.conf sẽ giống như thế này:

server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
        root   /usr/share/nginx/html;
    location / {
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
        include /etc/nginx/conf.d/php.conf;
        include /etc/nginx/conf.d/staticfiles.conf;
        include /etc/nginx/conf.d/block.conf;
}

Kế tiếp là bạn ra lại ngoài thư mục /etc/nginx, tạo thêm một thư mục mang tên domains và chuyển filedefault.conf sang thư mục này.

mkdir /etc/nginx/domains
mv /etc/nginx/conf.d/default.conf /etc/nginx/domains

Cuối cùng là mở file nginx.conf, tìm:

include /etc/nginx/conf.d/*.conf;

Sửa lại thành

include /etc/nginx/domains/*.conf;

Tìm tiếp

access_log  /var/log/nginx/access.log  main;

Chèn đoạn này vào dưới nó:

index index.php  index.html index.htm;

Nếu muốn tiết kiệm CPU, thì hãy thêm dấu # vào trước access_log để không cho nó ghi log của các lượt truy cập vào website và VPS.

Bây giờ bạn có thể restart lại NGINX rồi.

service nginx restart

II. Thêm VirtualHost vào NGINX

Làm lại bước này khi cần thêm một domain khác vào.

Trước khi thêm VirtualHost, chúng ta sẽ cần thống nhất đường dẫn lưu file của từng domain là như thế nào cho nó khoa học.

Mình khuyến khích các bạn nên vào thư mục /home, tạo thêm một thư mục mang tên nginx và các thư mục của từng domain sẽ được lưu trong đó. Ví dụ: /home/nginx/abcxyz.com.

Trong mỗi thư mục của domain, chúng ta cần có thêm 2 thư mục bao gồm:

– log/ – Để chứa các file log cho từng domain. Trong đây sẽ có 1 file tên là error.log.

– public_html/ – Thư mục chứa code của web bạn, cụ thể là sau này chúng ta sẽ cài WordPress vô đây.

Như vậy, ví dụ mình cần thêm domain abcxyz.com vào NGINX thì sẽ chạy các lệnh sau (nhớ thay lại thành tên domain bạn cần thay nhé chứ không phải cứ copy & paste đâu):

mkdir -p /home/nginx/abcxyz.com/log
touch /home/nginx/abcxyz.com/log/error.log
mkdir -p /home/nginx/abcxyz.com/public_html
chown -R nginx:nginx /home/nginx

Sau đó chúng ta sẽ copy file default.conf thành abcxyz.com.conf đặt trong cùng thư mục

cp /etc/nginx/domains/default.conf /etc/nginx/domains/abcxyz.com.conf

Mở file abcxyz.com.conf lên và tìm:

server_name  localhost;

Thay thành

server_name  www.abcxyz.com abcxyz.com;

Tìm tiếp

#access_log  /var/log/nginx/log/host.access.log  main;

Thêm vào phía dưới nó

error_log               /home/nginx/abcxyz.com/log/error.log      error;

Tìm tiếp

root   /usr/share/nginx/html;

Thay thành

root   /home/nginx/abcxyz.com/public_html;

Giờ thì lưu lại và restart lại NGINX

service nginx restart

Để test xem cả VirtualHost và PHP-FPM đã hoạt động tốt chưa, hãy tạo 1 file tên info.php lưu trong thư mụcpublic_html của domain vừa thêm với nội dung là:

<?php phpinfo(); ?>

Sau đó truy cập vào http://abcxyz.com/info.php, nếu nó hiển thị ra trang PHP như ở dưới thì thành công.

lemp-phpok

Ở trang đó bạn có thể biết được các thông tin quan trọng về phiên bản PHP mà bạn đang cài.

Sau này nếu muốn thêm domain khác, chỉ cần làm lại bước thêm VirtualHost này.

Tới đây coi như xong phần thêm VirtualHost, ở phần kế tiếp chúng ta sẽ làm thêm vài thao tác nữa để tối ưu NGINX tốt hơn vì nãy giờ chúng ta chưa tối ưu lại file nginx.conf.

Chỉnh sửa : Ping

Nguồn : Web

Lượt xem: 3523

Vài Nét Về Tác Giả "Ping"

Tôi đam mê công nghệ nhất là về mảng Network và System . Tôi thích tìm hiểu học hỏi chuyên sâu về Linux và Windows . Sau vài năm làm việc ngoài bôn ba , tôi đã cùng 2 anh chị thân lập nên web sohoa24h.net để chia sẻ kinh nghiệm kiến thức tới những ai đam mê IT .

Gửi Phản Hồi