Cài đặt, cấu hình VPS sử dụng nginx làm reverse proxy apache
1. Giới thiệu
Bài viết sau sẽ hướng dẫn khách hàng cấu hình Nginx làm Reverse Proxy với webserver là Apache.
Vậy tại sao phải cấu hình như vậy? Trên thực tế chúng ta sử dụng Apache bởi vì Apache tốt hơn Nginx trong việc phục vụ các trang web động (xử lý php). Nhưng vì tính đa dụng nên Apache khiến cho Web Server trở nên chậm chạp hơn so với Nginx khi xử lý các file tĩnh. Để tận dụng ưu thế của cả hai, khái niệm Reverse Proxy đã ra đời.
Nói đơn giản là dùng kết hợp Nginx để xử lý tập tin tĩnh (jpg, gif, png, css, js, html) và dùng Apache xử lý các tập tin động (php,...).
Mô hình cụ thể là dùng Nginx để làm proxy ngược. Nginx sẽ chạy ở port 80 tiếp nhận và xử lý các yêu cầu trang web tĩnh, còn các file có đuôi mở rộng là .php sẽ chuyển cho Apache thực hiện (port 8080) sau đó trả kết quả về cho Nginx.
Mô hình Client <----> Nginx <-----> Apache.
2. Các bước thực hiện.
2.1 Cài apache và php (cài rồi thì bỏ qua)
# yum install httpd
# yum install php php-mysql
2.2 Chỉnh cấu hình Apache
- # vi /etc/httpd/conf/httpd.conf
Thay
Listen 80
thành
Listen 127.0.0.1:8080 // cho Apache lắng nghe từ Nginx
- Thêm VirtualHost
NameVirtualHost 127.0.0.1:8080
# Define Server document root
DocumentRoot /var/www/html/
# Define the virtual host
<VirtualHost 127.0.0.1:8080>
ServerName www.yourwebsite.com
ServerAlias yourwebsite.com
DocumentRoot /var/www/yourwebsite.com
<Directory "/var/www/yourwebsite.com">
Options FollowSymLinks -Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
RewriteEngine on
</VirtualHost>
Với /var/www/yourwebsite.com là thư mục chứa mã nguồn (cần tạo trước)
Khởi động apache
# service httpd start
2.3 Cài nginx
- Thêm repo
# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$release...
gpgcheck=0
enabled=1
- Cài Nginx
# yum install nginx
- Chỉnh file cấu hình
# vi /etc/nginx/conf.d/default.conf
server {
listen 80;
root /var/www/;
index index.php index.html index.htm;
server_name yourwebsite.com;
location / {
try_files $uri $uri/ /index.php;
}
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;
}
location ~ /\.ht {
deny all;
}
}
- Khởi động nginx
# service nginx start
2.4 Kiểm tra
Dùng lệnh netstart -nplt để kiểm tra nginx đã dùng cổng 80 và apache dùng cổng 8080 chưa.
Thử tắt apache truy cập website báo lỗi 502 bad gateway tức là đã thành công.
Hoặc tạo file info.php trong /var/www/yourwebsite.com với nội dung
<php phpinfo(); ?>
Truy cập vào yourwebsite.com/info.php và xem phần Server API có phải là Apache 2.0 Handler hay không, nếu phải thì thành công.
Tham khảo: