Nginx hay "engine-x" là một máy chủ web hiệu suất cao với mức sử dụng bộ nhớ thấp, được Igor Sysoev tạo ra vào năm 2002. Nginx không chỉ là một máy chủ web, nó có thể được sử dụng như một proxy ngược cho nhiều giao thức như HTTP, HTTPS, POP3, SMTP và IMAP cũng như một trình cân bằng tải và bộ đệm HTTP.
Apache là phần mềm máy chủ web phổ biến nhất được cộng đồng nguồn mở duy trì theo Apache Software Foundation. Có nhiều mô-đun bổ sung có sẵn cho apache như hỗ trợ WebDav hoặc tường lửa ứng dụng web như mod_security và nó hỗ trợ nhiều ngôn ngữ lập trình web như Perl, Python, PHP thông qua các mô-đun gốc hoặc bằng các giao diện cgi, fcgi và FPM.
Trong hướng dẫn này, tôi sẽ cài đặt và cấu hình Nginx làm proxy ngược lưu trữ đệm cho máy chủ web Apache trên Ubuntu 15.10, Nginx được sử dụng làm giao diện người dùng và Apache làm giao diện người dùng. Nginx sẽ chạy trên cổng 80 để phản hồi các yêu cầu từ người dùng/trình duyệt, sau đó yêu cầu sẽ được chuyển tiếp đến máy chủ Apache đang chạy trên cổng 8080.
Sau đó cài đặt Apache bằng lệnh apt-get:
Sau khi cài đặt Apache, chúng ta phải cài đặt PHP làm module apache cho hướng dẫn này:
Nếu bạn muốn thay đổi cổng cho máy chủ web apache, bạn phải chỉnh sửa tệp cấu hình apache "/etc/apache2/ports.conf", sau đó tiến hành cấu hình máy chủ ảo trong thư mục "/etc/apache2/sites-available/".
Trước tiên, hãy thay đổi cổng cho apache thành 8080 bằng cách chỉnh sửa tệp "ports.conf" bằng Trình soạn thảo vim:
Ở dòng 5, đổi cổng 80 thành 8080.
Lưu và thoát.
Bây giờ hãy vào thư mục virtualhost và chỉnh sửa tệp "000-default.conf" :
Đảm bảo cấu hình của bạn giống như bên dưới:
Lưu và thoát.
Tiếp theo, kiểm tra cấu hình và khởi động lại apache:
Cuối cùng, chúng tôi xác minh rằng apache và php đang hoạt động. Tạo một tệp mới có tên"info.php"trong thư mục "/var/www/html/".
Truy cập trang web của bạn www.reverse.com:8080/info.php.
Kết quả sẽ tương tự như ảnh chụp màn hình ở trên.
Đi đến thư mục cấu hình nginx và chỉnh sửa tệp "nginx.conf":
Bật nén Gzip cho Nginx bằng cách bỏ chú thích các dòng gzip:
quan trọng nhất là :
gzip on : để bật chế độ nén gzip.
gzip_types : là danh sách các kiểu MIME mà bạn muốn bật chế độ nén.
gzip_proxied any : là bật chế độ nén cho yêu cầu được ủy quyền.
Ngay bên dưới cài đặt gzip, hãy thêm các cài đặt bộ đệm proxy sau:
Thư mục cho bộ đệm proxy là /var/cache.
levels là một lệnh cho Nginx biết bộ đệm được lưu trữ như thế nào được lưu trong hệ thống tập tin.
key_zone chỉ là tên của vùng bộ nhớ đệm, bạn có thể tự do chọn, nhưng đừng thêm ký tự đặc biệt hoặc khoảng trắng vào tên. Tôi sẽ sử dụng tên "reverse_cache" ở đây.
Lưu và thoát.
Bây giờ chúng ta sẽ cấu hình một virtualhost trong thư mục "/etc/nginx/sites-available".
Trong hướng dẫn này, tôi sẽ tạo một tệp cấu hình virtualhost mới có tên là "reverse.conf". Chỉ cần vào thư mục và tạo tệp mới bằng vim:
Dán cấu hình bên dưới:
Lưu và thoát.
Sau đó kích hoạt cấu hình virtualhost mới:
Cuối cùng, chúng ta sẽ kiểm tra cấu hình nginx và khởi động lại nginx:
Bây giờ, Nginx được cấu hình làm proxy ngược. Bạn có thể kiểm tra bằng curl:
Cache-Control: no-cache nghĩa là index.html và tất cả các tệp có đuôi .html sẽ không được lưu vào bộ nhớ đệm.
Một bài kiểm tra khác:
X-Cache: HIT nghĩa là trang đang được bộ nhớ đệm Nginx phục vụ.
Vui lòng cài đặt mô-đun apache "libapache2-mod-rpaf"và chỉnh sửa tệp cấu hình mô-đun:
Thêm IP máy chủ vào dòng 10. Máy chủ của tôi có IP: 192.168.1.108.
Lưu và thoát.
Bây giờ hãy khởi động lại apache:
Kiểm tra rpaf bằng cách xem nhật ký truy cập apache bằng lệnh tail:
Vậy là xong.
Nginx được cài đặt làm proxy ngược trước máy chủ web Apache. Nếu khách truy cập yêu cầu một tệp php, yêu cầu sẽ được chuyển đến apache trên cổng 8080 và bạn có thể thấy địa chỉ IP thực của khách truy cập trên tệp nhật ký apache.
Apache là phần mềm máy chủ web phổ biến nhất được cộng đồng nguồn mở duy trì theo Apache Software Foundation. Có nhiều mô-đun bổ sung có sẵn cho apache như hỗ trợ WebDav hoặc tường lửa ứng dụng web như mod_security và nó hỗ trợ nhiều ngôn ngữ lập trình web như Perl, Python, PHP thông qua các mô-đun gốc hoặc bằng các giao diện cgi, fcgi và FPM.
Trong hướng dẫn này, tôi sẽ cài đặt và cấu hình Nginx làm proxy ngược lưu trữ đệm cho máy chủ web Apache trên Ubuntu 15.10, Nginx được sử dụng làm giao diện người dùng và Apache làm giao diện người dùng. Nginx sẽ chạy trên cổng 80 để phản hồi các yêu cầu từ người dùng/trình duyệt, sau đó yêu cầu sẽ được chuyển tiếp đến máy chủ Apache đang chạy trên cổng 8080.
Bước 1 - Cài đặt Apache và PHP
Đăng nhập vào máy chủ Ubuntu của bạn bằng SSH và trở thành người dùng root bằng cách chạy:
Mã:
sudo su
Mã:
apt-get install apache2
Mã:
apt-get install php5 php5-mysql libapache2-mod-php5
Bước 2 - Cấu hình Apache và PHP
Theo mặc định, apache lắng nghe trên cổng 80. Chúng ta phải cấu hình apache để chạy trên cổng 8080 cho thiết lập proxy của mình vì cổng 80 sẽ được nginx sử dụng sau.Nếu bạn muốn thay đổi cổng cho máy chủ web apache, bạn phải chỉnh sửa tệp cấu hình apache "/etc/apache2/ports.conf", sau đó tiến hành cấu hình máy chủ ảo trong thư mục "/etc/apache2/sites-available/".
Trước tiên, hãy thay đổi cổng cho apache thành 8080 bằng cách chỉnh sửa tệp "ports.conf" bằng Trình soạn thảo vim:
Mã:
vim /etc/apache2/ports.conf
Mã:
Nghe 8080
Bây giờ hãy vào thư mục virtualhost và chỉnh sửa tệp "000-default.conf" :
Mã:
cd sites-available/
vim 000-default.conf
Mã:
ServerName www.reverse.com ServerAlias reverse.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Tiếp theo, kiểm tra cấu hình và khởi động lại apache:
Mã:
apachectl configtest
systemctl restart apache2
Mã:
cd /var/www/html/
echo "" > info.php
Kết quả sẽ tương tự như ảnh chụp màn hình ở trên.
Bước 3 - Cài đặt Nginx
Cài đặt Nginx bằng lệnh apt-get sau:
Mã:
apt-get install nginx
Bước 4 - Cấu hình Nginx
Sau khi Nginx được cài đặt, hãy cấu hình Nginx để hoạt động như proxy ngược cho máy chủ web apache chạy trên cổng 8080.Đi đến thư mục cấu hình nginx và chỉnh sửa tệp "nginx.conf":
Mã:
cd /etc/nginx/
vim nginx.conf
Mã:
# Cài đặt Gzip ## bật gzip; gzip_disable "msie6"; bật gzip_vary; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip on : để bật chế độ nén gzip.
gzip_types : là danh sách các kiểu MIME mà bạn muốn bật chế độ nén.
gzip_proxied any : là bật chế độ nén cho yêu cầu được ủy quyền.
Ngay bên dưới cài đặt gzip, hãy thêm các cài đặt bộ đệm proxy sau:
Mã:
# Cài đặt bộ đệm proxy proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
levels là một lệnh cho Nginx biết bộ đệm được lưu trữ như thế nào được lưu trong hệ thống tập tin.
key_zone chỉ là tên của vùng bộ nhớ đệm, bạn có thể tự do chọn, nhưng đừng thêm ký tự đặc biệt hoặc khoảng trắng vào tên. Tôi sẽ sử dụng tên "reverse_cache" ở đây.
Lưu và thoát.
Bây giờ chúng ta sẽ cấu hình một virtualhost trong thư mục "/etc/nginx/sites-available".
Trong hướng dẫn này, tôi sẽ tạo một tệp cấu hình virtualhost mới có tên là "reverse.conf". Chỉ cần vào thư mục và tạo tệp mới bằng vim:
Mã:
cd /etc/nginx/sites-available
vim reverse.conf
Mã:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Tên máy chủ miền www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Cấu hình Proxy ngược và Bộ đệm Proxy location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; # Cấu hình bộ đệm proxy_cache reverse_cache; proxy_cache_valid 3 giây; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Bật Cache cho tệp vị trí 30 ngày ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120 phút; hết hạn sau 30 ngày; proxy_cache reverse_cache; access_log off; } # Tắt Cache cho loại tệp html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { hết hạn -1; } location ~ /\.ht { từ chối tất cả; }}
Sau đó kích hoạt cấu hình virtualhost mới:
Mã:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
Mã:
nginx -t
systemctl restart nginx
Mã:
curl -I www.reverse.com
Cache-Control: no-cache nghĩa là index.html và tất cả các tệp có đuôi .html sẽ không được lưu vào bộ nhớ đệm.
Một bài kiểm tra khác:
Mã:
curl -I www.reverse.com/info.php
X-Cache: HIT nghĩa là trang đang được bộ nhớ đệm Nginx phục vụ.
Bước 5 - Cấu hình ghi nhật ký
Trong bước này, tôi sẽ cấu hình apache để ghi lại địa chỉ IP thực của khách truy cập thay vì địa chỉ IP cục bộ.Vui lòng cài đặt mô-đun apache "libapache2-mod-rpaf"và chỉnh sửa tệp cấu hình mô-đun:
Mã:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
Mã:
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Bây giờ hãy khởi động lại apache:
Mã:
systemctl restart apache2
Mã:
tail -f /var/log/apache2/access.log
Vậy là xong.
Nginx được cài đặt làm proxy ngược trước máy chủ web Apache. Nếu khách truy cập yêu cầu một tệp php, yêu cầu sẽ được chuyển đến apache trên cổng 8080 và bạn có thể thấy địa chỉ IP thực của khách truy cập trên tệp nhật ký apache.