1 vài lợi ích khi ta biên dịch và cài đặt Nginx từ mã nguồn là:

1. Nâng cấp được phiên bản mới nhất
2. Sửa được các lỗ hổng bảo mật
3. Sửa chữa được các lỗi ảnh hưởng đến dịch vụ của bạn
4. Thay đổi các giá trị mặc định

Cài đặt các gói phụ thuộc

Chúng ta cần cài đặt các gói phụ thuộc sau đây:

yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

Tải xuống mã nguồn Nginx

Tạo thư mục chứa mã nguồn tải xuống:

mkdir -p src && cd src

Kiểm tra các phiên bản hiện tại của Nginx, tại: http://nginx.org/en/download.html

Giả sử ta chọn phiên bản mới nhất hiện tại là 1.7.7

nginxVersion="1.5.5"
wget http://nginx.org/download/nginx-$nginxVersion.tar.gz
tar -xzf nginx-$nginxVersion.tar.gz 
ln -sf nginx-$nginxVersion nginx

Cấu hình các tham số cài đặt

Chúng ta cần cấu hình các tùy chọn cơ bản cần thiết cho Nginx hoạt động đúng như ta mong muốn.

Để xem các tùy chọn có thể ta dùng lệnh: ./configure --help

Các tham số cơ bản: Một vài tùy chọn cơ bản cho phép chúng ta cài lên một số đường dẫn mặc định của hệ thống, như /etc/. Hoặc tài khoản user nào, nhóm group nào mà nginx được phép thực thi.

--user
--group
--prefix
--sbin-path
--conf-path
--pid-path
--lock-path
--error-log-path
--http-log-path

Một vài tùy chọn khác cũng khá quan trọng:

--with-http_gzip_static_module tùy chọn cho phép nginx sử dụng gzip

--with-http_stub_status_module cho phép các plugins trên nginx lấy trạng thái của nginx

--with-http_ssl_module là cần thiết nếu bạn cài đặt một máy chủ https

--with-pcre hỗ trợ định tuyến routing sử dụng RegEX

--with-file-aio cho phép nginx sử dụng asynchronous I/O (khuyến khích sử dụng cho chương trình download file tĩnh)

--with-http_realip_module sử dụng để lấy IP của client phía sau load balancer.

--without-http_scgi_module

--without-http_uwsgi_module

--without-http_fastcgi_module

Tham số tôi lựa chọn

cd nginx

./configure \
--user=nginx                          \
--group=nginx                         \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module

Biên dịch mã nguồn

Khi chúng ta chạy xong phần cầu hình ở bước trên, thực hiện lệnh sau đây để biên dịch mã nguồn Nginx và cài đặt.

 make
 make install

Khởi động cùng hệ thống

Sau bước biên dịch và cài đặt ở trên, chúng ta hãy cấu hình để cho Nginx có thể chạy cùng khi hệ thống được khởi động lại.

1. Tạo tài khoản hệ thống nginx

useradd -r nginx

2. Cài đặt /etc/init.d/nginx

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# pidfile:     /var/run/nginx.pid
# user:        nginx

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

lockfile=/var/run/nginx.lock

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

Hoặc, bạn có thể tải và cài cấu hình trên bằng lệnh sau đây:

wget -O /etc/init.d/nginx https://gist.github.com/sairam/5892520/raw/b8195a71e944d46271c8a49f2717f70bcd04bf1a/etc-init.d-nginx

Và file này cần có khả năng chạy được, vì chúng ta sử dụng nó qua lệnh service nginx

chmod +x /etc/init.d/nginx

3. Thiết lập dịch vụ khởi động cùng hệ thống

chkconfig --add nginx
chkconfig --level 345 nginx on

4. Thay đổi giá trị mặc định

Trong /etc/nginx/nginx.conf bằng cách thêm tùy chọn types_hash_bucket_size server_names_hash_bucket_size sau đây:

http {
    include       mime.types;
    default_type  application/octet-stream;
    # add the below 2 lines under http around line 20
    types_hash_bucket_size 64;
    server_names_hash_bucket_size 128;

Khởi động máy chủ Nginx. Mở tại cổng 80

service nginx start

Quá trình cài đặt hoàn tất !

Liên kết tham khảo

https://www.digitalocean.com/community/tutorials/how-to-compile-nginx-from-source-on-a-centos-6-4-x64-vps

About The Author