Skip to content Skip to main navigation Skip to footer

Thiết lập Nginx proxy OpenLiteSpeed

I. Tìm hiểu sơ lược về webserver Nginx và OpenLiteSpeed

1. Nginx là gì?

NGINX là một máy chủ dịch vụ web (web server) mã nguồn mở với các tính năng mở rộng Nginx cũng được sử dụng phổ biến như một máy chủ proxy (reverse proxy server), HTTP cache, dùng làm cân bằng tải (load balancer).
Đặc biệt trong các trường hợp cần phục vụ nội dung tĩnh (file hình ảnh, css, js, text,..), các yêu cầu truy vấn đồng thời số lượng lớn (high concurrent request), cho hiệu suất cao xử lý 10.000 kết nối cùng lúc.

Một vài tính năng cơ bản của NGINX.

  • Reverse proxy kèm caching
  • Cân bằng tải
  • FastCGI cùng với caching
  • Xử lý file tĩnh, file index và auto-indexing
  • TLS/SSL với SNI
  • Hỗ trợ nhúng Perl, Lua,..
  • Hỗ trợ WebSockets

2. OpenLiteSpeed là gì


OpenLiteSpeed ​​là một phiên bản mã nguồn mở của LiteSpeed ​​Web Server Enterprise.
Cả hai webserver đều được phát triển và duy trì bởi cùng một nhóm và được giữ theo cùng tiêu chuẩn mã hóa chất lượng cao.
OpenLiteSpeed ​​là phiên bản mã nguồn mở và miễn phí của phiên bản LiteSpeed ​​Web Server Enterprise.
OpenLiteSpeed ​​thừa hưởng hầu hết các tính năng cần thiết trong LiteSpeed ​​Enterprise, kể cả LSCache (plugin hỗ trợ cache cho WordPress).


Các tính năng nổi bật

  • Hỗ trợ Sendfile, Nén Gzip,Nén Brotli cho các tệp tĩnh
  • All version of SPDY/2, 3, 3.1 and HTTP/2 support, Pipelined requests, TCP_FASTOPEN support, HTTP/2 Server Push
  • Điểm mạnh của OpenLitespeed
  • OpenLiteSpeed ​​tương thích với mod_rewrite.
  • OLS đi kèm với WebAdmin GUI tích hợp sẵn.
  • Có kết nối Chống DDoS và điều chỉnh băng thông, tích hợp ModSecurity v3, v.v.
  • Mô-đun bộ nhớ cache toàn trang tích hợp có khả năng tùy chỉnh cao và hiệu quả để mang lại trải nghiệm người dùng.
  • Tự động triển khai hệ thống tối ưu hóa Tốc độ trang của Google với mô-đun mod_pagespeed.
  • Native SAPI cho PHP cho phép các ứng dụng bên ngoài được viết bằng PHP chạy nhanh hơn tới 50%.
  • Trải nghiệm mức tăng hiệu suất có thể đo lường được với OpenLiteSpeed ​​và LSCache cho WordPress.

Tìm hiểu thêm các tính năng của OpenLiteSpeed có tham khảo tại: Trang Chủ

II. Các bước thực hiện cài đặt nginx proxy OpenLiteSpeed

Qua tìm hiểu sơ bộ các tính năng của hai webserver mã nguồn mở Nginx và OpenLiteSpeed thì bài hướng dẫn này kết hơp của hai lại nginx proxy OpenLiteSpeed
Với webserver nginx chưa hỗ trợ mod_rewrite thay vào đó việc này sẽ được OpenLiteSpeed hỗ trợ phía backend.

Bước 1: Cài đặt Nginx

Đầu tiên bạn hãy cài đặt webserver thứ nhất là NGINX. Nhưng trước khi cài đặt bạn hãy kiểm tra và tắt một số thành phần sau.

1.1 SELINUX

Để tắt Selinux bạn sử dụng các lệnh sau

AZDIGI Tutorial
systemctl disable firewalld
systemctl stop firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config

# Kiểm tra status selinux đã disabled hoàn tắt nếu chưa cần reboot lại VPS
setenforce 0
sestatus
    

1.2 Cài đặt các gói hỗ trợ webserver

Tiếp theo bạn cài đặt một số gói cần thiết với lệnh bên dưới

AZDIGI Tutorial
yum groupinstall " Development Tools"  -y
yum install zlib-devel pcre-devel openssl-devel wget -y
yum install epel-release -y
yum update -y
reboot
# Tiên hành reboot lại VPS
    

1.3 Cài đặt Nginx

Bước này sẽ cài đặt NGINX. Mình sẽ cài đặt nginx bằng lệnh yum nhanh chóng.

AZDIGI Tutorial
yum install nginx -y
    
Thiết lập Nginx proxy OpenLiteSpeed

Sau khi đã cài đặt thành công Nginx kiểm tra nginx đã hoạt động chưa với lệnh sau:

AZDIGI Tutorial
systemctl start nginx
systemctl enable nginx
systemctl status nginx
    

Tiếp theo bạn điều chỉnh lại file nginx.conf. Để backup lại nginx.conf trong quá trình thao tác sai có thể phục hồi lại.

AZDIGI Tutorial
cd /etc/nginx/
	cp nginx.conf nginx.conf.$(date +'%F_%H-%M-%S').bakup
	#kiểm tra lại lệnh ll
	ll hoặc ls

Tiếp tục điều chỉnh lại file nginx.conf với nội dung bên dưới.

worker_processes auto;
pid /var/run/nginx.pid;
 
events {
        worker_connections  8096;
		multi_accept        on;
		use                 epoll;
}
 
http {
 
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

server {
         listen       80 default_server;
         listen       [::]:80 default_server;
         server_name  _;
         root         /var/www/html;

         location / {
         }

         error_page 404 /404.html;
         location = /404.html {
         }

         error_page 500 502 503 504 /50x.html;
         location = /50x.html {
         }
        }


        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
 
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
 
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
 
        gzip on;
        gzip_disable "msie6";
        gzip_min_length  1100;
        gzip_buffers  4 32k;
        gzip_types    text/plain application/x-javascript text/xml text/css;
 
 # File Cache Settings
        open_file_cache          max=10000 inactive=10m;
        open_file_cache_valid    2m;
        open_file_cache_min_uses 2;
        open_file_cache_errors   on;
		
	server_names_hash_bucket_size 64;
        ignore_invalid_headers on;
        client_max_body_size    8m;
        client_header_timeout  3m;
        client_body_timeout 3m;
        send_timeout     3m;
        connection_pool_size  256;
        client_header_buffer_size 4k;
        large_client_header_buffers 4 32k;
        request_pool_size  4k;
        output_buffers   4 32k;
        postpone_output  1460;
		
## Enable caching of SSL sessions		
        ssl_session_cache shared:SSL:10m;
	ssl_session_timeout 10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
	ssl_prefer_server_ciphers on;
		
        include /etc/nginx/conf.d/*.conf;
        
}
AZDIGI Tutorial
vi nginx.conf
# kiểm tra lỗi syntax khi thay đổi nội dung
	nginx -t
# ở hình đã báo không có lỗi

Sau khi cài đặt hoàn tất mình tiến hành kiểm tra truy cập Nginx

AZDIGI Tutorial
mkdir -p /var/www/html/
echo  "kiem tra da cai dat nginx thanh cong" > /var/www/html/index.html
service nginx restart
Redirecting to /bin/systemctl restart nginx.service
curl http://softvn.info/
kiem tra da cai dat nginx thanh cong

Bước 2 cài đặt OpenLiteSpeed

2.1 Để cài đặt OpenLiteSpeed thực hiện lệnh sau:

Tiếp theo bạn cài đặt webserver thứ 2 là OpenLiteSpeed vào.

AZDIGI Tutorial
	rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el7.noarch.rpm
	yum install openlitespeed -y

2.2 Cài đặt php 7.4 cho OpenLiteSpeed

Tiếp đến bạn cài đặt php cho webserver này. Và trong bài này mình sẽ ưu tiên cài đặt phiên bản php 7.4 và một số module đi kèm.

AZDIGI Tutorial
yum install lsphp74 lsphp74-gd lsphp74-json lsphp74-common lsphp74-process lsphp74-mbstring lsphp74-mysqlnd lsphp74-xml lsphp74-opcache lsphp74-mcrypt lsphp74-pdo lsphp74-imap lsphp74-bcmath lsphp74-pecl-memcache lsphp74-pecl-memcached lsphp74-pecl-redis lsphp74-pgsql lsphp74-zip -y

Sau khi cài đặt xong bạn truy cập http://ip:8088 xuất hiện như hình bên dưới là đã cài đặt OpenLiteSpeed thành công.

2.3 Thêm domain vào WebAdmin GUI

Mình sẽ không để cập cách thêm domain vào WebAdmin trong bài viết này. Mà ở một bài khác mình có hướng dẫn chi tiết từng bước thêm vào. Mời các bạn truy cập 3 link bên dưới để thực hiện nhé.

  1. Đầu tiên thì cần thao tác đổi passwd admin webadmin console theo hướng dẫn ở đây
  2. Thêm domain để quản lý từ webadmin theo hướng dẫn luôn ở đây
  3. Các bạn tham khảo chi tiết quá trình cài đặt OpenLiteSpeed ở đây

Bạn truy cập http://ip:7080 để vào webadmin kiểm tra lại.

Để kiểm tra domain kienthuclinux.info đã hoạt động chưa tiến hành kiểm tra lệnh sau:

AZDIGI Tutorial
echo "kiem tra openlitepeed thanh cong"> /usr/local/lsws/nginxlitespeed.kienthuclinux.info/index.php
systemctl restart lsws
curl http://kienthuclinux.info:8088
kiem tra openlitepeed thanh cong

Bước 3: Thực hiện Nginx proxy OpenLiteSpeed

Truy cập vào /etc/nginx/conf.d tạo file vhost thực hiện proxy ở Nginx và thêm nội dung bên dưới về file kienthuclinux.info.conf

AZDIGI Tutorial
cd /etc/nginx/conf.d
vi kienthuclinux.info.conf 
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
Redirecting to /bin/systemctl restart nginx.service

server {
        server_name  kienthuclinux.info;
        access_log off;
        error_log  /var/log/nginx/kienthuclinux.info.log crit;

location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|html|htm|wml)$ {
        #root /home/kienthuclinux.info.conf;
        expires 30d;
        }

location / {
        client_max_body_size    10m;
        client_body_buffer_size 128k;

        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    128k;
        proxy_buffers     4 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        proxy_connect_timeout 30s;


        proxy_redirect  http:///kienthuclinux.info:8088   http://kienthuclinux.info;

        proxy_pass   http://127.0.0.1:8088/;

        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Để kiểm tra xem việc thực hiện proxy thành công chưa bạn tiến hành như sau:

AZDIGI Tutorial
Khi thực hiện kiểm tra curl kienthuclinux.info thì nginx không thực hiện truy cập ở nội dung ở file
 /var/www/html/index.html
curl kienthuclinux.info 
curl kienthuclinux.info:8088
Xuất hiện nội dung như truy cập port 8088 vậy là đã thực hiện proxy thành công

Bạn sẽ nhận được thông báo kết quả như sau.

Như vậy mình vừa hoàn tất hướng dẫn Thiết lập Nginx proxy OpenLiteSpeed. Hy vọng bài viết này mang đến cho bạn một kiến thức mới.

Chúc các bạn thực hiện thành công.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới: