Lab 4.6 Cấu hình Nginx làm Reserve Proxy cho Apache trên CentOS 6.5

root

Well-Known Member
1. Giới thiệu
- Ở các bài lab trước mình đã hướng dẫn cài Apache và nginx làm web server. Nếu bạn xem bài thống kê về thị trường web server (tại đây) bạn sẽ thấy Apache đang chiếm ngôi đầu bảng và Nginx thì đang đi lên.
- Apache là một web server đa dụng, nó mạnh mẽ trong việc xử lý các dynamic page, nhưng cũng chính vì thế trong Apache cũng có nhiều phần thừa khiến nó tốn tài nguyên hơn.
- Nginx là một máy chủ web (web server), proxy ngược (reserve proxy) và e-mail proxy (IMAP/POP3) nhẹ, hiệu năng cao, miễn phí. Nginx xử lý khá tốt đối với các web tĩnh.
- Để kết hợp cả 2 ưu điểm của 2 web server Apache và Nginx, người ta đưa ra 1 mô hình như sau:
  • Nginx đứng đằng trước chịu trách nhiệm front-end và xử lý các static page
  • Apache đứng đằng sau chịu trách nhiệm back-end và xử lý các dynamic page

2. Cấu hình
- Trên máy Nginx
- Cài đặt Nginx các bạn xem tại đây http://svuit.com/showthread.php?432-Lab-4-3-Cài-đặt-Nginx-trên-Centos-6-5

- Tạo file proxy.conf và thêm các dòng sau
[root@svuit conf.d]# vi /etc/nginx/conf.d/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
- Tạo thư mục lưu cache
mkdir -p /tmp/cache_nginx/tmp

chown nginx.nginx –R /tmp/cache_nginx
chmod 700 -R /tmp/cache_nginx
- Cấu hình nginx.conf để làm proxy
[root@svuit conf.d]# vi /etc/nginx/nginx.conf

user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

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;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;
proxy_cache_path /tmp/cache_nginx levels=2 keys_zone=web-cache:128m max_size=1024m inactive=1d;
proxy_temp_path /tmp/cache_nginx/tmp;

#gzip on;
#include /etc/nginx/conf.d/*.conf;

server {
listen 80;
server_name svuit.com
access_log /var/log/nginx/svuit.com.error.log ;
error_log /var/log/nginx/svuit.com.error.log ;
location / {
proxy_pass http://10.2.2.30:80/; #IP và port của Apache server
include /etc/nginx/conf.d/proxy.conf; # đường dẫn file proxy.conf mà các bạn vừa config ở trên
proxy_cache web-cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
}
}
- Để kiểm tra nội dung file config đúng chưa bạn có thể dùng lệnh sau
[root@svuit conf.d]# nginx -t


nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
- Các bạn khởi động lại dịch vụ Nginx
[root@svuit conf.d]# service nginx restart
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
- Qua máy chủ Apache chỉnh nội dung page mà client sẽ truy cập
[root@www ~]# vi /var/www/svuit/home.html


<h1> Apache Server </h1></br>
<h1> Welcome to Svuit.com</h1></br>
- Kết quả Client truy cập


- Bây giờ tiến hành thay đổi trang home.html trên Apache
[root@www ~]# vi /var/www/svuit/home.html


<h1> Apache Server </h1></br>
<h1> Welcome to Svuit.com</h1></br>
<h2> clear cache </h2>
- Và khi truy cập lại nó vẫn hiện ra trang cũ mà không thay đổi, vì trên nginx đã cache trang này(đây là static page) nên khi user truy cập sẽ lấy trang này. Tuy nhiên nếu bạn truy cập thẳng vào Apache bạn sẽ thấy nội dung mới

 
Top