Cách cài đặt Nginx làm Proxy ngược cho Apache trên Ubuntu 15.10

theanh

Administrator
Nhân viên
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.


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
Sau đó cài đặt Apache bằng lệnh apt-get:
Mã:
apt-get install apache2
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:
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
Ở dòng 5, đổi cổng 80 thành 8080.
Mã:
Nghe 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ã:
cd sites-available/
vim 000-default.conf
Đảm bảo cấu hình của bạn giống như bên dưới:
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
Lưu và thoát.

Tiếp theo, kiểm tra cấu hình và khởi động lại apache:
Mã:
apachectl configtest
systemctl restart apache2
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/".
Mã:
cd /var/www/html/
echo "" > info.php
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.


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
Bật nén Gzip cho Nginx bằng cách bỏ chú thích các dòng gzip:
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;
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:
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;
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:
Mã:
cd /etc/nginx/sites-available
vim reverse.conf
Dán cấu hình bên dưới:
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ả; }}
Lưu và thoát.

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/
Cuối cùng, chúng ta sẽ kiểm tra cấu hình nginx và khởi động lại nginx:
Mã:
nginx -t
systemctl restart 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:
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
Thêm IP máy chủ vào dòng 10. Máy chủ của tôi có IP: 192.168.1.108.
Mã:
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Lưu và thoát.


Bây giờ hãy khởi động lại apache:
Mã:
systemctl restart apache2
Kiểm tra rpaf bằng cách xem nhật ký truy cập apache bằng lệnh tail:
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.


Kết luận​

Nginx là máy chủ web nhanh và phổ biến với mức sử dụng bộ nhớ thấp có thể hoạt động như máy chủ web và proxy ngược cho giao thức HTTP và HTTPS. Proxy ngược Nginx cho apache là thiết lập sử dụng Nginx làm giao diện người dùng và apache làm giao diện người dùng. Nginx xử lý yêu cầu đến từ trình duyệt và chuyển đến giao diện người dùng apache. Trong hướng dẫn này, chúng tôi đã thiết lập cấu hình cho nginx làm bộ đệm http lưu trữ các yêu cầu tệp PHP và hình ảnh.
 
Back
Bên trên